mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-04 03:19:47 +01:00
* calculation of parameter and resultlocation offsets now depends on
tg.direction instead of if(n)def powerpc
This commit is contained in:
parent
12cced8116
commit
06e03ecd23
@ -1308,14 +1308,17 @@ implementation
|
||||
l:=tvarsym(sym).getvaluesize;
|
||||
varalign:=size_2_align(l);
|
||||
varalign:=used_align(varalign,aktalignment.localalignmin,aktalignment.localalignmax);
|
||||
{$ifdef powerpc}
|
||||
{ on the powerpc, the local variables are accessed with a positiv offset }
|
||||
tvarsym(sym).address:=align(datasize,varalign);
|
||||
datasize:=tvarsym(sym).address+l;
|
||||
{$else powerpc}
|
||||
tvarsym(sym).address:=align(datasize+l,varalign);
|
||||
datasize:=tvarsym(sym).address;
|
||||
{$endif powerpc}
|
||||
if (tg.direction = 1) then
|
||||
begin
|
||||
{ on the powerpc, the local variables are accessed with a positiv offset }
|
||||
tvarsym(sym).address:=align(datasize,varalign);
|
||||
datasize:=tvarsym(sym).address+l;
|
||||
end
|
||||
else
|
||||
begin
|
||||
tvarsym(sym).address:=align(datasize+l,varalign);
|
||||
datasize:=tvarsym(sym).address;
|
||||
end;
|
||||
end;
|
||||
funcretsym :
|
||||
begin
|
||||
@ -1332,14 +1335,17 @@ implementation
|
||||
l:=tfuncretsym(sym).returntype.def.size;
|
||||
varalign:=size_2_align(l);
|
||||
varalign:=used_align(varalign,aktalignment.localalignmin,dataalignment);
|
||||
{$ifdef powerpc}
|
||||
{ on the powerpc, the local variables are accessed with a positiv offset }
|
||||
tfuncretsym(sym).address:=align(datasize,varalign);
|
||||
datasize:=tfuncretsym(sym).address+l;
|
||||
{$else powerpc}
|
||||
tfuncretsym(sym).address:=align(datasize+l,varalign);
|
||||
datasize:=tfuncretsym(sym).address;
|
||||
{$endif powerpc}
|
||||
if (tg.direction = 1) then
|
||||
begin
|
||||
{ on the powerpc, the local variables are accessed with a positiv offset }
|
||||
tfuncretsym(sym).address:=align(datasize,varalign);
|
||||
datasize:=tfuncretsym(sym).address+l;
|
||||
end
|
||||
else
|
||||
begin
|
||||
tfuncretsym(sym).address:=align(datasize+l,varalign);
|
||||
datasize:=tfuncretsym(sym).address;
|
||||
end;
|
||||
procinfo.return_offset:=tg.direction*tfuncretsym(sym).address;
|
||||
end;
|
||||
end;
|
||||
@ -2457,7 +2463,11 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.92 2003-04-05 21:09:32 jonas
|
||||
Revision 1.93 2003-04-16 07:53:11 jonas
|
||||
* calculation of parameter and resultlocation offsets now depends on
|
||||
tg.direction instead of if(n)def powerpc
|
||||
|
||||
Revision 1.92 2003/04/05 21:09:32 jonas
|
||||
* several ppc/generic result offset related fixes. The "normal" result
|
||||
offset seems now to be calculated correctly and a lot of duplicate
|
||||
calculations have been removed. Nested functions accessing the parent's
|
||||
|
||||
Loading…
Reference in New Issue
Block a user