mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 05:09:17 +02:00
* per-parameter alignment set in target specific paramanager now overrides default alignment of parameter locals
git-svn-id: trunk@3272 -
This commit is contained in:
parent
f31ede0b12
commit
3f2f694d48
@ -2078,7 +2078,7 @@ implementation
|
|||||||
if isaddr then
|
if isaddr then
|
||||||
tg.GetLocal(list,sizeof(aint),voidpointertype.def,localloc.reference)
|
tg.GetLocal(list,sizeof(aint),voidpointertype.def,localloc.reference)
|
||||||
else
|
else
|
||||||
tg.GetLocal(list,getsize,vartype.def,localloc.reference);
|
tg.GetLocal(list,getsize,tparavarsym(sym).paraloc[calleeside].alignment,vartype.def,localloc.reference);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
localsymtable,
|
localsymtable,
|
||||||
|
@ -101,6 +101,7 @@ unit tgobj;
|
|||||||
|
|
||||||
{ Allocate space for a local }
|
{ Allocate space for a local }
|
||||||
procedure getlocal(list: TAsmList; size : longint;def:tdef;var ref : treference);
|
procedure getlocal(list: TAsmList; size : longint;def:tdef;var ref : treference);
|
||||||
|
procedure getlocal(list: TAsmList; size : longint; alignment : shortint; def:tdef;var ref : treference);
|
||||||
procedure UnGetLocal(list: TAsmList; const ref : treference);
|
procedure UnGetLocal(list: TAsmList; const ref : treference);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -576,16 +577,18 @@ implementation
|
|||||||
|
|
||||||
|
|
||||||
procedure ttgobj.getlocal(list: TAsmList; size : longint;def:tdef;var ref : treference);
|
procedure ttgobj.getlocal(list: TAsmList; size : longint;def:tdef;var ref : treference);
|
||||||
var
|
|
||||||
varalign : shortint;
|
|
||||||
begin
|
begin
|
||||||
varalign:=def.alignment;
|
getlocal(list, size, def.alignment, def, ref);
|
||||||
varalign:=used_align(varalign,aktalignment.localalignmin,aktalignment.localalignmax);
|
end;
|
||||||
|
|
||||||
|
procedure ttgobj.getlocal(list: TAsmList; size : longint; alignment : shortint; def:tdef;var ref : treference);
|
||||||
|
begin
|
||||||
|
alignment:=used_align(alignment,aktalignment.localalignmin,aktalignment.localalignmax);
|
||||||
{ can't use reference_reset_base, because that will let tgobj depend
|
{ can't use reference_reset_base, because that will let tgobj depend
|
||||||
on cgobj (PFV) }
|
on cgobj (PFV) }
|
||||||
fillchar(ref,sizeof(ref),0);
|
fillchar(ref,sizeof(ref),0);
|
||||||
ref.base:=current_procinfo.framepointer;
|
ref.base:=current_procinfo.framepointer;
|
||||||
ref.offset:=alloctemp(list,size,varalign,tt_persistent,nil);
|
ref.offset:=alloctemp(list,size,alignment,tt_persistent,nil);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user