Browse Source

* track va_uses_float_reg also for varargs functions without varargs
parameters (see e.g. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23070 )

git-svn-id: trunk@41472 -

Jonas Maebe 6 years ago
parent
commit
c7834af354
2 changed files with 4 additions and 4 deletions
  1. 2 2
      compiler/powerpc/cpupara.pas
  2. 2 2
      compiler/powerpc64/cpupara.pas

+ 2 - 2
compiler/powerpc/cpupara.pas

@@ -650,8 +650,6 @@ unit cpupara;
                   result:=create_paraloc_info_intern(p,side,varargspara,curintreg,curfloatreg,curmmreg,cur_stack_offset,true)
                   result:=create_paraloc_info_intern(p,side,varargspara,curintreg,curfloatreg,curmmreg,cur_stack_offset,true)
                 else
                 else
                   internalerror(2019021921);
                   internalerror(2019021921);
-                if curfloatreg<>firstfloatreg then
-                  include(varargspara.varargsinfo,va_uses_float_reg);
               end;
               end;
             { varargs routines have to reserve at least 32 bytes for the AIX abi }
             { varargs routines have to reserve at least 32 bytes for the AIX abi }
             if (target_info.abi in [abi_powerpc_aix,abi_powerpc_darwin]) and
             if (target_info.abi in [abi_powerpc_aix,abi_powerpc_darwin]) and
@@ -660,6 +658,8 @@ unit cpupara;
            end
            end
         else
         else
           internalerror(2019021710);
           internalerror(2019021710);
+        if curfloatreg<>firstfloatreg then
+          include(varargspara.varargsinfo,va_uses_float_reg);
         create_funcretloc_info(p,side);
         create_funcretloc_info(p,side);
       end;
       end;
 
 

+ 2 - 2
compiler/powerpc64/cpupara.pas

@@ -767,8 +767,6 @@ begin
               curfloatreg, curmmreg, cur_stack_offset, true)
               curfloatreg, curmmreg, cur_stack_offset, true)
           else
           else
             internalerror(2019021920);
             internalerror(2019021920);
-          if curfloatreg <> firstfloatreg then
-            include(varargspara.varargsinfo, va_uses_float_reg);
         end;
         end;
       { varargs routines have to reserve at least 64 bytes for the PPC64 ABI }
       { varargs routines have to reserve at least 64 bytes for the PPC64 ABI }
       if (result < 64) then
       if (result < 64) then
@@ -776,6 +774,8 @@ begin
     end
     end
   else
   else
     internalerror(2019021911);
     internalerror(2019021911);
+  if curfloatreg <> firstfloatreg then
+    include(varargspara.varargsinfo, va_uses_float_reg);
   create_funcretloc_info(p, side);
   create_funcretloc_info(p, side);
 end;
 end;