m68k: hopefully fix passing of smaller-than-alignment sized records/structs for stdcall/cdecl

git-svn-id: trunk@36568 -
This commit is contained in:
Károly Balogh 2017-06-22 01:14:02 +00:00
parent 238f423c71
commit 23f4304881
2 changed files with 5 additions and 5 deletions

View File

@ -384,8 +384,8 @@ unit cgcpu;
cgpara.check_simple_location;
len:=align(cgpara.intsize,cgpara.alignment);
g_stackpointer_alloc(list,len);
reference_reset_base(href,NR_STACK_POINTER_REG,0,cgpara.alignment,[]);
g_concatcopy(list,r,href,len);
reference_reset_base(href,NR_STACK_POINTER_REG,cgpara.location^.reference.offset,cgpara.alignment,[]);
g_concatcopy(list,r,href,cgpara.intsize);
end
else
begin

View File

@ -343,10 +343,10 @@ unit cpupara;
begin
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
inc(paraloc^.reference.offset,target_info.first_parm_offset);
{ M68K is a big-endian target }
if (paralen<target_info.stackalign{tcgsize2size[OS_INT]}) then
inc(paraloc^.reference.offset,target_info.stackalign-paralen);
end;
{ M68K is a big-endian target }
if (paralen<target_info.stackalign{tcgsize2size[OS_INT]}) then
inc(paraloc^.reference.offset,target_info.stackalign-paralen);
inc(cur_stack_offset,align(paralen,target_info.stackalign));
paralen := 0;