rs6000.c (rs6000_gimplify_va_arg): Consume all fp regs if the last fp arg doesn't...
authorAlan Modra <amodra@bigpond.net.au>
Thu, 20 Apr 2006 07:04:00 +0000 (07:04 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 20 Apr 2006 07:04:00 +0000 (16:34 +0930)
* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Consume all
fp regs if the last fp arg doesn't fit in regs.

From-SVN: r113111

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 023894bfc0c2c5d779e102b0672b862242bfb839..978e128fc2bd3fc1c3ddd6c8679f276d3bf45d31 100644 (file)
@@ -1,3 +1,8 @@
+2006-04-20  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Consume all
+       fp regs if the last fp arg doesn't fit in regs.
+
 2006-04-20  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        PR target/27182
index 0c004a9826230fc0f4a16aa25f0443f48a85759b..7e18f6d43de076384a4d75efb9f91a7fa6b7d21d 100644 (file)
@@ -5960,7 +5960,7 @@ rs6000_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
       t = build1 (LABEL_EXPR, void_type_node, lab_false);
       append_to_statement_list (t, pre_p);
 
-      if (n_reg > 2)
+      if ((n_reg == 2 && reg != gpr) || n_reg > 2)
        {
          /* Ensure that we don't find any more args in regs.
             Alignment has taken care of the n_reg == 2 case.  */