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

* fixed some bugs in a_param_ref due to missing begin/end block markers

git-svn-id: trunk@4224 -
tom_at_work 19 жил өмнө
parent
commit
5622a7ae64

+ 4 - 7
compiler/powerpc64/cgcpu.pas

@@ -477,11 +477,7 @@ begin
           if (size <> OS_NO) then
           if (size <> OS_NO) then
             a_load_ref_reg(list, size, location^.size, tmpref,
             a_load_ref_reg(list, size, location^.size, tmpref,
               location^.register)
               location^.register)
-          else
-          {$IFDEF extdebug}
-          list.concat(tai_comment.create(strpnew('a_param_ref with OS_NO, sizeleft ' + inttostr(sizeleft))));
-          {$ENDIF extdebug}
-
+          else begin
             { load non-integral sized memory location into register. This
             { load non-integral sized memory location into register. This
              memory location be 1-sizeleft byte sized.
              memory location be 1-sizeleft byte sized.
              Always assume that this memory area is properly aligned, eg. start
              Always assume that this memory area is properly aligned, eg. start
@@ -529,19 +525,20 @@ begin
                 a_reg_dealloc(list, NR_R0);
                 a_reg_dealloc(list, NR_R0);
                 a_reg_dealloc(list, NR_R12);
                 a_reg_dealloc(list, NR_R12);
               end;
               end;
-              else
+              else begin
                 { still > 8 bytes to load, so load data single register now }
                 { still > 8 bytes to load, so load data single register now }
                 a_load_ref_reg(list, location^.size, location^.size, tmpref,
                 a_load_ref_reg(list, location^.size, location^.size, tmpref,
                   location^.register);
                   location^.register);
                 { the block is > 8 bytes, so we have to store any bytes not
                 { the block is > 8 bytes, so we have to store any bytes not
                  a multiple of the register size beginning with the MSB }
                  a multiple of the register size beginning with the MSB }
                 adjusttail := true;
                 adjusttail := true;
+              end;
             end;
             end;
             if (adjusttail) and (sizeleft < tcgsize2size[OS_INT]) then
             if (adjusttail) and (sizeleft < tcgsize2size[OS_INT]) then
               a_op_const_reg(list, OP_SHL, OS_INT,
               a_op_const_reg(list, OP_SHL, OS_INT,
                 (tcgsize2size[OS_INT] - sizeleft) * tcgsize2size[OS_INT],
                 (tcgsize2size[OS_INT] - sizeleft) * tcgsize2size[OS_INT],
                 location^.register);
                 location^.register);
-
+          end;
         end;
         end;
       LOC_REFERENCE:
       LOC_REFERENCE:
         begin
         begin