* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Consume all
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Apr 2006 07:04:00 +0000 (07:04 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Apr 2006 07:04:00 +0000 (07:04 +0000)
fp regs if the last fp arg doesn't fit in regs.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113111 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 023894b..978e128 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 0c004a9..7e18f6d 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.  */