diff options
author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2007-01-21 22:16:42 +0000 |
---|---|---|
committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2007-01-21 22:16:42 +0000 |
commit | d93ffbb33d341e8d4f1eecef69fff1abdb20fa84 (patch) | |
tree | 44b05ec3f48df7527f6a6203083dd98b492c0a5a /compiler/rautils.pas | |
parent | 6aec5cf02545216bca610ba5267de3bcd42dabb0 (diff) | |
download | fpc-d93ffbb33d341e8d4f1eecef69fff1abdb20fa84.tar.gz |
* fixed calling qualified methods in assembler + tests for ppc/ppc64/
i386/x86_64
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@6112 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/rautils.pas')
-rw-r--r-- | compiler/rautils.pas | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/compiler/rautils.pas b/compiler/rautils.pas index d132e8da91..5b2c9caef5 100644 --- a/compiler/rautils.pas +++ b/compiler/rautils.pas @@ -184,7 +184,7 @@ Function EscapeToPascal(const s:string): string; ---------------------------------------------------------------------} procedure AsmSearchSym(const s:string;var srsym:tsym;var srsymtable:TSymtable); -Function GetRecordOffsetSize(s:string;Var Offset: aint;var Size:aint):boolean; +Function GetRecordOffsetSize(s:string;Var Offset: aint;var Size:aint; var mangledname: string):boolean; Function SearchType(const hs:string;var size:aint): Boolean; Function SearchRecordType(const s:string): boolean; Function SearchIConstant(const s:string; var l:aint): boolean; @@ -1259,7 +1259,7 @@ Begin end; -Function GetRecordOffsetSize(s:string;Var Offset: aint;var Size:aint):boolean; +Function GetRecordOffsetSize(s:string;Var Offset: aint;var Size:aint; var mangledname: string):boolean; { search and returns the offset and size of records/objects of the base } { with field name setup in field. } { returns FALSE if not found. } @@ -1275,6 +1275,7 @@ Begin GetRecordOffsetSize:=FALSE; Offset:=0; Size:=0; + mangledname:=''; i:=pos('.',s); if i=0 then i:=255; @@ -1348,6 +1349,15 @@ Begin st:=tobjectdef(vardef).symtable; end; end; + procsym: + begin + st:=nil; + if Tprocsym(sym).ProcdefList.Count>1 then + Message(asmr_w_calling_overload_func); + mangledname:=tprocdef(tprocsym(sym).ProcdefList[0]).mangledname; + GetRecordOffsetSize:=(s=''); + exit; + end; end; end; { Support Field.Type as typecasting } |