* don't use the paracgsize in get_paraloc_def(), because it generally

contains the tcgsize of the entire parameter rather than only of
    what is left (-> calculate it from the remaining parameter length)

git-svn-id: trunk@24776 -
This commit is contained in:
Jonas Maebe 2013-06-02 14:05:07 +00:00
parent e3594452b5
commit 9938169d2c
8 changed files with 12 additions and 12 deletions

View File

@ -439,7 +439,7 @@ unit cpupara;
else
begin
paraloc^.size:=paracgsize;
paraloc^.def:=get_paraloc_def(paradef,paracgsize,paralen,firstparaloc);
paraloc^.def:=get_paraloc_def(paradef,paralen,firstparaloc);
end;
case loc of
LOC_REGISTER:

View File

@ -366,7 +366,7 @@ unit cpupara;
{ LOC_REFERENCE covers always the overleft }
paraloc^.loc:=LOC_REFERENCE;
paraloc^.size:=int_cgsize(paralen);
paraloc^.def:=get_paraloc_def(paradef,paracgsize,paralen,firstparaloc);
paraloc^.def:=get_paraloc_def(paradef,paralen,firstparaloc);
if (side=callerside) then
paraloc^.reference.index:=NR_STACK_POINTER_REG;

View File

@ -531,7 +531,7 @@ unit cpupara;
else
begin
l:=paralen;
paraloc^.def:=get_paraloc_def(paradef,paracgsize,l,firstparaloc);
paraloc^.def:=get_paraloc_def(paradef,l,firstparaloc);
end;
paraloc^.size:=int_cgsize(l);
end;

View File

@ -396,7 +396,7 @@ unit cpupara;
{$endif DEBUG_CHARLIE}
paraloc^.loc:=LOC_REFERENCE;
paraloc^.size:=int_cgsize(paralen);
paraloc^.def:=get_paraloc_def(paradef,paraloc^.size,paralen,firstparaloc);
paraloc^.def:=get_paraloc_def(paradef,paralen,firstparaloc);
if (side = callerside) then
paraloc^.reference.index:=NR_STACK_POINTER_REG
else

View File

@ -463,7 +463,7 @@ implementation
begin
paraloc^.loc:=LOC_REFERENCE;
paraloc^.size:=int_cgsize(paralen);
paraloc^.def:=get_paraloc_def(locdef,paraloc^.size,paralen,firstparaloc);
paraloc^.def:=get_paraloc_def(locdef,paralen,firstparaloc);
if side=callerside then
begin

View File

@ -151,9 +151,9 @@ unit paramgr;
function handle_common_ret_in_param(def:tdef;pd:tabstractprocdef;out retinparam:boolean):boolean;
{ returns the def to use for a tparalocation part of a cgpara for paradef,
for which the tcgsize is locsize and the integer length is restlen.
for which the def is paradef and the integer length is restlen.
fullsize is true if restlen equals the full paradef size }
function get_paraloc_def(paradef: tdef; paracgsize: tcgsize; restlen: aint; fullsize: boolean): tdef;
function get_paraloc_def(paradef: tdef; restlen: aint; fullsize: boolean): tdef;
end;
@ -610,14 +610,14 @@ implementation
end;
function tparamanager.get_paraloc_def(paradef: tdef; paracgsize: tcgsize; restlen: aint; fullsize: boolean): tdef;
function tparamanager.get_paraloc_def(paradef: tdef; restlen: aint; fullsize: boolean): tdef;
begin
if fullsize then
result:=paradef
{ no support for 128 bit ints -> tcgsize2orddef can't handle
OS_(S)128 }
else if not(paracgsize in [OS_NO,OS_128,OS_S128]) then
result:=cgsize_orddef(paracgsize)
else if restlen in [1,2,4,8] then
result:=cgsize_orddef(int_cgsize(paracgsize))
else
result:=getarraydef(u8inttype,restlen);
end;

View File

@ -480,7 +480,7 @@ unit cpupara;
if (paradef.typ<>orddef) then
begin
paracgsize:=int_cgsize(paralen);
locdef:=get_paraloc_def(paradef,paracgsize,paralen,firstparaloc);
locdef:=get_paraloc_def(paradef,paralen,firstparaloc);
end;
if (paracgsize in [OS_NO,OS_64,OS_S64,OS_128,OS_S128]) then
begin

View File

@ -387,7 +387,7 @@ begin
if (paracgsize <> OS_NO) and (paradef.typ <> orddef) then
begin
paracgsize := int_cgsize(paralen);
locdef:=get_paraloc_def(paradef,paracgsize,paralen,firstparaloc);
locdef:=get_paraloc_def(paradef,paralen,firstparaloc);
end;
{ aix requires that record data (including partial data) stored in