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 c58997ae0083f76d82b92f2e1eae1e9f0704c66c..7519fac699877a6c9bd9b9a778f8864220e231d4 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 bf836c2af8eaaf703e77213cb5a4af4c48725d02..b51586f715195b5ee396788df875eedab9a7c925 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.  */