diff options
author | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-01-06 15:05:40 +0000 |
---|---|---|
committer | jonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2013-01-06 15:05:40 +0000 |
commit | 4d6426cefa69553d4e13911d77979f73ece885a7 (patch) | |
tree | a13ead72441b43e2f60c093f80d56b0cbd1b279c /compiler/powerpc | |
parent | aed970802355a02175b1c0197fedf57c789e5a4d (diff) | |
download | fpc-4d6426cefa69553d4e13911d77979f73ece885a7.tar.gz |
* pass the procdef to getintparaloc instead of only the proccalloption, so
that the type of the parameters can be determined automatically
o added compilerproc declarations for all helpers called in the compiler
via their assembler name, so we can look up the corresponding procdef
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@23325 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/powerpc')
-rw-r--r-- | compiler/powerpc/cpupara.pas | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/powerpc/cpupara.pas b/compiler/powerpc/cpupara.pas index 550f04a128..7252a48592 100644 --- a/compiler/powerpc/cpupara.pas +++ b/compiler/powerpc/cpupara.pas @@ -37,7 +37,7 @@ unit cpupara; function get_volatile_registers_fpu(calloption : tproccalloption):tcpuregisterset;override; function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override; - procedure getintparaloc(calloption : tproccalloption; nr : longint; def : tdef; var cgpara : tcgpara);override; + procedure getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);override; function create_paraloc_info(p : tabstractprocdef; side: tcallercallee):longint;override; function create_varargs_paraloc_info(p : tabstractprocdef; varargspara:tvarargsparalist):longint;override; function get_funcretloc(p : tabstractprocdef; side: tcallercallee; forcetempdef: tdef): tcgpara;override; @@ -77,14 +77,16 @@ unit cpupara; end; - procedure tppcparamanager.getintparaloc(calloption : tproccalloption; nr : longint; def : tdef; var cgpara : tcgpara); + procedure tppcparamanager.getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara); var paraloc : pcgparalocation; + def : tdef; begin + def:=tparavarsym(pd.paras[nr-1]).vardef; cgpara.reset; cgpara.size:=def_cgsize(def); cgpara.intsize:=tcgsize2size[cgpara.size]; - cgpara.alignment:=get_para_align(calloption); + cgpara.alignment:=get_para_align(pd.proccalloption); cgpara.def:=def; paraloc:=cgpara.add_location; with paraloc^ do |