i386.c (ix86_gimplify_va_arg): Don't need temporary for passing arguments the contain...
authorJan Beulich <jbeulich@novell.com>
Thu, 8 Jul 2004 05:53:38 +0000 (05:53 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 8 Jul 2004 05:53:38 +0000 (22:53 -0700)
        * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for
        passing arguments the containers for which are registers.

From-SVN: r84266

gcc/ChangeLog
gcc/config/i386/i386.c

index c58997a..7519fac 100644 (file)
@@ -1,3 +1,8 @@
+2004-07-06 Jan Beulich <jbeulich@novell.com>
+                                                                                
+        * config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for
+        passing arguments the containers for which are registers.
+
 2004-07-08  Alexandre Oliva  <aoliva@redhat.com>
 
        Introduce H8SX support.
index bf836c2..b51586f 100644 (file)
@@ -3240,7 +3240,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
   if (container)
     {
       int needed_intregs, needed_sseregs;
-      int need_temp;
+      bool need_temp;
       tree int_addr, sse_addr;
 
       lab_false = create_artificial_label ();
@@ -3249,9 +3249,9 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
       examine_argument (TYPE_MODE (type), type, 0,
                        &needed_intregs, &needed_sseregs);
 
-
-      need_temp = ((needed_intregs && TYPE_ALIGN (type) > 64)
-                  || TYPE_ALIGN (type) > 128);
+      need_temp = (!REG_P (container)
+                  && ((needed_intregs && TYPE_ALIGN (type) > 64)
+                      || TYPE_ALIGN (type) > 128));
 
       /* In case we are passing structure, verify that it is consecutive block
          on the register save area.  If not we need to do moves.  */