Commit 67b8f1c1 by Paolo Bonzini Committed by Paolo Bonzini

i386.c (ix86_compare_emitted): Remove.

2009-04-07  Paolo Bonzini  <bonzini@gnu.org>

        * config/i386/i386.c (ix86_compare_emitted): Remove.
        (ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
        ix86_compare_op0 like ix86_compare_emitted used to be handled.
        * config/i386/i386.h (ix86_compare_emitted): Remove.
        * config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
        instead of ix86_compare_emitted.
        * config/i386/sync.md (sync_compare_and_swap_cc): Likewise.

From-SVN: r145665
parent d5859bf4
2009-04-07 Paolo Bonzini <bonzini@gnu.org>
* config/i386/i386.c (ix86_compare_emitted): Remove.
(ix86_expand_compare, ix86_expand_branch): Handle MODE_CC
ix86_compare_op0 like ix86_compare_emitted used to be handled.
* config/i386/i386.h (ix86_compare_emitted): Remove.
* config/i386/i386.md (stack_protect_test): Set ix86_compare_op0
instead of ix86_compare_emitted.
* config/i386/sync.md (sync_compare_and_swap_cc): Likewise.
2009-04-07 Andrew Stubbs <ams@codesourcery.com> 2009-04-07 Andrew Stubbs <ams@codesourcery.com>
* config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file. * config.gcc (sh-*-*): Add sysroot-suffix.h to tm_file.
......
...@@ -1702,7 +1702,6 @@ int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER] = ...@@ -1702,7 +1702,6 @@ int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER] =
rtx ix86_compare_op0 = NULL_RTX; rtx ix86_compare_op0 = NULL_RTX;
rtx ix86_compare_op1 = NULL_RTX; rtx ix86_compare_op1 = NULL_RTX;
rtx ix86_compare_emitted = NULL_RTX;
/* Define parameter passing and return registers. */ /* Define parameter passing and return registers. */
...@@ -14271,11 +14270,9 @@ ix86_expand_compare (enum rtx_code code, rtx *second_test, rtx *bypass_test) ...@@ -14271,11 +14270,9 @@ ix86_expand_compare (enum rtx_code code, rtx *second_test, rtx *bypass_test)
if (bypass_test) if (bypass_test)
*bypass_test = NULL_RTX; *bypass_test = NULL_RTX;
if (ix86_compare_emitted) if (GET_MODE_CLASS (GET_MODE (ix86_compare_op0)) == MODE_CC)
{ ret = gen_rtx_fmt_ee (code, VOIDmode, ix86_compare_op0, ix86_compare_op1);
ret = gen_rtx_fmt_ee (code, VOIDmode, ix86_compare_emitted, const0_rtx);
ix86_compare_emitted = NULL_RTX;
}
else if (SCALAR_FLOAT_MODE_P (GET_MODE (op0))) else if (SCALAR_FLOAT_MODE_P (GET_MODE (op0)))
{ {
gcc_assert (!DECIMAL_FLOAT_MODE_P (GET_MODE (op0))); gcc_assert (!DECIMAL_FLOAT_MODE_P (GET_MODE (op0)));
...@@ -14304,12 +14301,6 @@ ix86_expand_branch (enum rtx_code code, rtx label) ...@@ -14304,12 +14301,6 @@ ix86_expand_branch (enum rtx_code code, rtx label)
{ {
rtx tmp; rtx tmp;
/* If we have emitted a compare insn, go straight to simple.
ix86_expand_compare won't emit anything if ix86_compare_emitted
is non NULL. */
if (ix86_compare_emitted)
goto simple;
switch (GET_MODE (ix86_compare_op0)) switch (GET_MODE (ix86_compare_op0))
{ {
case QImode: case QImode:
...@@ -14510,7 +14501,11 @@ ix86_expand_branch (enum rtx_code code, rtx label) ...@@ -14510,7 +14501,11 @@ ix86_expand_branch (enum rtx_code code, rtx label)
} }
default: default:
gcc_unreachable (); /* If we have already emitted a compare insn, go straight to simple.
ix86_expand_compare won't emit anything if ix86_compare_emitted
is non NULL. */
gcc_assert (GET_MODE_CLASS (GET_MODE (ix86_compare_op0)) == MODE_CC);
goto simple;
} }
} }
......
...@@ -2333,7 +2333,6 @@ extern enum reg_class const regclass_map[FIRST_PSEUDO_REGISTER]; ...@@ -2333,7 +2333,6 @@ extern enum reg_class const regclass_map[FIRST_PSEUDO_REGISTER];
extern rtx ix86_compare_op0; /* operand 0 for comparisons */ extern rtx ix86_compare_op0; /* operand 0 for comparisons */
extern rtx ix86_compare_op1; /* operand 1 for comparisons */ extern rtx ix86_compare_op1; /* operand 1 for comparisons */
extern rtx ix86_compare_emitted;
/* To properly truncate FP values into integers, we need to set i387 control /* To properly truncate FP values into integers, we need to set i387 control
word. We can't emit proper mode switching code before reload, as spills word. We can't emit proper mode switching code before reload, as spills
......
...@@ -21954,9 +21954,6 @@ ...@@ -21954,9 +21954,6 @@
"" ""
{ {
rtx flags = gen_rtx_REG (CCZmode, FLAGS_REG); rtx flags = gen_rtx_REG (CCZmode, FLAGS_REG);
ix86_compare_op0 = operands[0];
ix86_compare_op1 = operands[1];
ix86_compare_emitted = flags;
#ifdef TARGET_THREAD_SSP_OFFSET #ifdef TARGET_THREAD_SSP_OFFSET
if (TARGET_64BIT) if (TARGET_64BIT)
...@@ -21971,6 +21968,9 @@ ...@@ -21971,6 +21968,9 @@
else else
emit_insn (gen_stack_protect_test_si (flags, operands[0], operands[1])); emit_insn (gen_stack_protect_test_si (flags, operands[0], operands[1]));
#endif #endif
ix86_compare_op0 = flags;
ix86_compare_op1 = const0_rtx;
emit_jump_insn (gen_beq (operands[2])); emit_jump_insn (gen_beq (operands[2]));
DONE; DONE;
}) })
......
...@@ -168,9 +168,8 @@ ...@@ -168,9 +168,8 @@
"TARGET_CMPXCHG" "TARGET_CMPXCHG"
{ {
operands[4] = gen_rtx_REG (CCZmode, FLAGS_REG); operands[4] = gen_rtx_REG (CCZmode, FLAGS_REG);
ix86_compare_op0 = operands[3]; ix86_compare_op0 = operands[4];
ix86_compare_op1 = NULL; ix86_compare_op1 = const0_rtx;
ix86_compare_emitted = operands[4];
if ((<MODE>mode == DImode && !TARGET_64BIT) || <MODE>mode == TImode) if ((<MODE>mode == DImode && !TARGET_64BIT) || <MODE>mode == TImode)
{ {
enum machine_mode hmode = <MODE>mode == DImode ? SImode : DImode; enum machine_mode hmode = <MODE>mode == DImode ? SImode : DImode;
......
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