* 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:
tom_at_work 2006-04-18 14:32:42 +00:00
parent f31ede0b12
commit 3f2f694d48
2 changed files with 9 additions and 6 deletions

View File

@ -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,

View File

@ -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;