aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2004-07-08 05:53:38 +0000
committerRichard Henderson <rth@gcc.gnu.org>2004-07-07 22:53:38 -0700
commite52a6df533ec893321481360fc79624c7bd54a0f (patch)
tree1d0e259478437bf773eb1f9078e49ffbddc490f1
parent9e8021146914969eb77b5575c6a842365f0d018e (diff)
downloadgcc-e52a6df533ec893321481360fc79624c7bd54a0f.zip
gcc-e52a6df533ec893321481360fc79624c7bd54a0f.tar.gz
gcc-e52a6df533ec893321481360fc79624c7bd54a0f.tar.bz2
i386.c (ix86_gimplify_va_arg): Don't need temporary for passing arguments the containers for which are registers.
* config/i386/i386.c (ix86_gimplify_va_arg): Don't need temporary for passing arguments the containers for which are registers. From-SVN: r84266
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c8
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c58997a..7519fac 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index bf836c2..b51586f 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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. */