2
0
Эх сурвалжийг харах

* SPARC: properly justify parameters on stack with size less than 4, fixes failure on tests/cg/tcalext5.pp

git-svn-id: trunk@26294 -
sergei 11 жил өмнө
parent
commit
d70a880f33

+ 6 - 0
compiler/sparc/cpupara.pas

@@ -304,6 +304,12 @@ implementation
                     else
                     else
                       paraloc^.reference.index:=NR_FRAME_POINTER_REG;
                       paraloc^.reference.index:=NR_FRAME_POINTER_REG;
                     paraloc^.reference.offset:=target_info.first_parm_offset+parasize;
                     paraloc^.reference.offset:=target_info.first_parm_offset+parasize;
+
+                    if (target_info.endian=endian_big) and
+                       (paralen<tcgsize2size[OS_INT]) and
+                       (paradef.typ<>recorddef) then
+                      inc(paraloc^.reference.offset,4-paralen);
+
                     { Parameters are aligned at 4 bytes }
                     { Parameters are aligned at 4 bytes }
                     inc(parasize,align(tcgsize2size[paraloc^.size],sizeof(pint)));
                     inc(parasize,align(tcgsize2size[paraloc^.size],sizeof(pint)));
                   end;
                   end;