Commit 52cf10a3 by Richard Henderson Committed by Richard Henderson

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
parent 551a3297
2004-12-26 Richard Henderson <rth@redhat.com> 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 * simplify-rtx.c (simplify_relational_operation_1): Don't simplify
plus/minus across EQ for floating-point. plus/minus across EQ for floating-point.
......
...@@ -3350,6 +3350,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p) ...@@ -3350,6 +3350,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
rtx container; rtx container;
int indirect_p = 0; int indirect_p = 0;
tree ptrtype; tree ptrtype;
enum machine_mode nat_mode;
/* Only 64bit target needs something special. */ /* Only 64bit target needs something special. */
if (!TARGET_64BIT) if (!TARGET_64BIT)
...@@ -3372,9 +3373,9 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p) ...@@ -3372,9 +3373,9 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
size = int_size_in_bytes (type); size = int_size_in_bytes (type);
rsize = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; rsize = (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
container = construct_container (type_natural_mode (type), TYPE_MODE (type), nat_mode = type_natural_mode (type);
type, 0, REGPARM_MAX, SSE_REGPARM_MAX, container = construct_container (nat_mode, TYPE_MODE (type), type, 0,
intreg, 0); REGPARM_MAX, SSE_REGPARM_MAX, intreg, 0);
/* Pull the value out of the saved registers. */ /* 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) ...@@ -3390,8 +3391,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
lab_false = create_artificial_label (); lab_false = create_artificial_label ();
lab_over = create_artificial_label (); lab_over = create_artificial_label ();
examine_argument (TYPE_MODE (type), type, 0, examine_argument (nat_mode, type, 0, &needed_intregs, &needed_sseregs);
&needed_intregs, &needed_sseregs);
need_temp = (!REG_P (container) need_temp = (!REG_P (container)
&& ((needed_intregs && TYPE_ALIGN (type) > 64) && ((needed_intregs && TYPE_ALIGN (type) > 64)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment