* for ARM CPU records must be aligned in stack depending of record size to prevent misaligned error when the record is passed as parameter in registers. It fixes tcalext* tests for ARM.

git-svn-id: trunk@7749 -
This commit is contained in:
yury 2007-06-20 20:31:06 +00:00
parent be65e77702
commit 206d027e9e

View File

@ -117,7 +117,8 @@ implementation
uses
cutils,
systems,verbose,
procinfo
procinfo,
symconst
;
@ -642,7 +643,17 @@ implementation
procedure ttgobj.getlocal(list: TAsmList; size : longint; alignment : shortint; def:tdef;var ref : treference);
begin
{$ifdef arm}
{ for ARM CPU records must be aligned in stack depending of record size }
{ to prevent misaligned error when the record is passed as parameter in registers }
if def.typ=recorddef then
if size>2 then
alignment:=current_settings.alignment.localalignmax
else
alignment:=size;
{$else}
alignment:=used_align(alignment,current_settings.alignment.localalignmin,current_settings.alignment.localalignmax);
{$endif arm}
{ can't use reference_reset_base, because that will let tgobj depend
on cgobj (PFV) }
fillchar(ref,sizeof(ref),0);