Browse Source

* fixed setting the paraloc shift value for data whose size is not a power
of 2: paraloc^.size was then OS_NO, so their shiftval was set to 0,
while we also have to put those in the upper bytes of the paraloc

git-svn-id: trunk@32634 -

Jonas Maebe 9 years ago
parent
commit
e43f767cbf
1 changed files with 2 additions and 2 deletions
  1. 2 2
      compiler/powerpc/cpupara.pas

+ 2 - 2
compiler/powerpc/cpupara.pas

@@ -502,9 +502,9 @@ unit cpupara;
                         registers is left-aligned }
                       if (target_info.system in systems_aix) and
                          (paradef.typ = recorddef) and
-                         (tcgsize2size[paraloc^.size] <> sizeof(aint)) then
+                         (paralen < sizeof(aint)) then
                         begin
-                          paraloc^.shiftval := (sizeof(aint)-tcgsize2size[paraloc^.size])*(-8);
+                          paraloc^.shiftval := (sizeof(aint)-paralen)*(-8);
                           paraloc^.size := OS_INT;
                           paraloc^.def := u32inttype;
                         end;