mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 18:47:52 +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
|
||||
tg.GetLocal(list,sizeof(aint),voidpointertype.def,localloc.reference)
|
||||
else
|
||||
tg.GetLocal(list,getsize,vartype.def,localloc.reference);
|
||||
tg.GetLocal(list,getsize,tparavarsym(sym).paraloc[calleeside].alignment,vartype.def,localloc.reference);
|
||||
end;
|
||||
end;
|
||||
localsymtable,
|
||||
|
@ -101,6 +101,7 @@ unit tgobj;
|
||||
|
||||
{ Allocate space for a local }
|
||||
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);
|
||||
end;
|
||||
|
||||
@ -576,16 +577,18 @@ implementation
|
||||
|
||||
|
||||
procedure ttgobj.getlocal(list: TAsmList; size : longint;def:tdef;var ref : treference);
|
||||
var
|
||||
varalign : shortint;
|
||||
begin
|
||||
varalign:=def.alignment;
|
||||
varalign:=used_align(varalign,aktalignment.localalignmin,aktalignment.localalignmax);
|
||||
getlocal(list, size, def.alignment, def, ref);
|
||||
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
|
||||
on cgobj (PFV) }
|
||||
fillchar(ref,sizeof(ref),0);
|
||||
ref.base:=current_procinfo.framepointer;
|
||||
ref.offset:=alloctemp(list,size,varalign,tt_persistent,nil);
|
||||
ref.offset:=alloctemp(list,size,alignment,tt_persistent,nil);
|
||||
end;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user