summaryrefslogtreecommitdiff
path: root/compiler/aarch64/cpupara.pas
diff options
context:
space:
mode:
authorjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-01-06 15:05:40 +0000
committerjonas <jonas@3ad0048d-3df7-0310-abae-a5850022a9f2>2013-01-06 15:05:40 +0000
commit4d6426cefa69553d4e13911d77979f73ece885a7 (patch)
treea13ead72441b43e2f60c093f80d56b0cbd1b279c /compiler/aarch64/cpupara.pas
parentaed970802355a02175b1c0197fedf57c789e5a4d (diff)
downloadfpc-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/aarch64/cpupara.pas')
-rw-r--r--compiler/aarch64/cpupara.pas6
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/aarch64/cpupara.pas b/compiler/aarch64/cpupara.pas
index 4f0e032fc4..c5b50924f9 100644
--- a/compiler/aarch64/cpupara.pas
+++ b/compiler/aarch64/cpupara.pas
@@ -39,7 +39,7 @@ unit cpupara;
function get_volatile_registers_mm(calloption : tproccalloption):tcpuregisterset;override;
function push_addr_param(varspez:tvarspez;def : tdef;calloption : tproccalloption) : boolean;override;
function ret_in_param(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;
@@ -75,12 +75,14 @@ unit cpupara;
end;
- procedure taarch64paramanager.getintparaloc(calloption : tproccalloption; nr : longint; def : tdef; var cgpara : tcgpara);
+ procedure taarch64paramanager.getintparaloc(pd : tabstractprocdef; nr : longint; var cgpara : tcgpara);
var
paraloc : pcgparalocation;
+ def : tdef;
begin
if nr<1 then
internalerror(2002070801);
+ def:=tparavarsym(pd.paras[nr-1]).vardef;
cgpara.reset;
cgpara.size:=def_cgsize(def);
cgpara.intsize:=tcgsize2size[cgpara.size];