diff options
author | Richard Henderson <rth@redhat.com> | 2004-12-26 19:50:27 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-12-26 19:50:27 -0800 |
commit | 52cf10a30abd1156ae2d926fab1341799c10141b (patch) | |
tree | ce4bee796d7a6ee2b6cdcd8f2029cbd9a086a9c5 | |
parent | 551a3297bb7f0468b5ec488641313286ea3e703f (diff) | |
download | gcc-52cf10a30abd1156ae2d926fab1341799c10141b.zip gcc-52cf10a30abd1156ae2d926fab1341799c10141b.tar.gz gcc-52cf10a30abd1156ae2d926fab1341799c10141b.tar.bz2 |
i386.c (ix86_gimplify_va_arg): Also pass the result of type_natural_mode to examine_argument.
* config/i386/i386.c (ix86_gimplify_va_arg): Also pass the result
of type_natural_mode to examine_argument.
From-SVN: r92633
-rw-r--r-- | gcc/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 10 |
2 files changed, 15 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ef86e13..6d26e5b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,15 @@ 2004-12-26 Richard Henderson <rth@redhat.com> + * config/i386/i386.c (ix86_gimplify_va_arg): Also pass the result + of type_natural_mode to examine_argument. + + * config/i386/i386.md (mov<MMXMODEI>_internal_rex64): New. + (movv2sf_internal_rex64): New. + (mov<MMXMODEI>_internal): Use no register preferences at all. + (movv2sf_internal): Likewise. + +2004-12-26 Richard Henderson <rth@redhat.com> + * simplify-rtx.c (simplify_relational_operation_1): Don't simplify plus/minus across EQ for floating-point. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index c146b74..054da85 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -3350,6 +3350,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p) rtx container; int indirect_p = 0; tree ptrtype; + enum machine_mode nat_mode; /* Only 64bit target needs something special. */ if (!TARGET_64BIT) @@ -3372,9 +3373,9 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p) size = int_size_in_bytes (type); rsize = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; - container = construct_container (type_natural_mode (type), TYPE_MODE (type), - type, 0, REGPARM_MAX, SSE_REGPARM_MAX, - intreg, 0); + nat_mode = type_natural_mode (type); + container = construct_container (nat_mode, TYPE_MODE (type), type, 0, + REGPARM_MAX, SSE_REGPARM_MAX, intreg, 0); /* Pull the value out of the saved registers. */ @@ -3390,8 +3391,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p) lab_false = create_artificial_label (); lab_over = create_artificial_label (); - examine_argument (TYPE_MODE (type), type, 0, - &needed_intregs, &needed_sseregs); + examine_argument (nat_mode, type, 0, &needed_intregs, &needed_sseregs); need_temp = (!REG_P (container) && ((needed_intregs && TYPE_ALIGN (type) > 64) |