Commit 6862f97f by Uros Bizjak Committed by Uros Bizjak

reg-stack.c (subst_stack_regs_pat): <UNSPEC_SIN, UNSPEC_COS, UNSPEC_FRNDINT,…

reg-stack.c (subst_stack_regs_pat): <UNSPEC_SIN, UNSPEC_COS, UNSPEC_FRNDINT, UNSPEC_F2XM1>: abort() if src1 dies.

2004-04-30  Uros Bizjak  <uros@kss-loka.si>

        * reg-stack.c (subst_stack_regs_pat): <UNSPEC_SIN, UNSPEC_COS,
        UNSPEC_FRNDINT, UNSPEC_F2XM1>: abort() if src1 dies.
        <UNSPEC_SINCOS_COS, UNSPEC_TAN_ONE, UNSPEC_XTRACT_FRACT>: Same.
        <UNSPEC_SINCOS_SIN, UNSPEC_TAN_TAN, UNSPEC_XTRACT_EXP>: Same.

From-SVN: r81324
parent c65a01af
2004-04-30 Uros Bizjak <uros@kss-loka.si>
* reg-stack.c (subst_stack_regs_pat): <UNSPEC_SIN, UNSPEC_COS,
UNSPEC_FRNDINT, UNSPEC_F2XM1>: abort() if src1 dies.
<UNSPEC_SINCOS_COS, UNSPEC_TAN_ONE, UNSPEC_XTRACT_FRACT>: Same.
<UNSPEC_SINCOS_SIN, UNSPEC_TAN_TAN, UNSPEC_XTRACT_EXP>: Same.
2004-04-29 Richard Guenther <richard.guenther@uni-tuebingen.de> 2004-04-29 Richard Guenther <richard.guenther@uni-tuebingen.de>
* commom.opt (Wfatal-errors): Add it. * commom.opt (Wfatal-errors): Add it.
......
...@@ -1733,18 +1733,15 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat) ...@@ -1733,18 +1733,15 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
emit_swap_insn (insn, regstack, *src1); emit_swap_insn (insn, regstack, *src1);
/* Input should never die, it is
replaced with output. */
src1_note = find_regno_note (insn, REG_DEAD, REGNO (*src1)); src1_note = find_regno_note (insn, REG_DEAD, REGNO (*src1));
if (src1_note)
abort();
if (STACK_REG_P (*dest)) if (STACK_REG_P (*dest))
replace_reg (dest, FIRST_STACK_REG); replace_reg (dest, FIRST_STACK_REG);
if (src1_note)
{
replace_reg (&XEXP (src1_note, 0), FIRST_STACK_REG);
regstack->top--;
CLEAR_HARD_REG_BIT (regstack->reg_set, REGNO (*src1));
}
replace_reg (src1, FIRST_STACK_REG); replace_reg (src1, FIRST_STACK_REG);
break; break;
...@@ -1849,7 +1846,11 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat) ...@@ -1849,7 +1846,11 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
emit_swap_insn (insn, regstack, *src1); emit_swap_insn (insn, regstack, *src1);
/* Input should never die, it is
replaced with output. */
src1_note = find_regno_note (insn, REG_DEAD, REGNO (*src1)); src1_note = find_regno_note (insn, REG_DEAD, REGNO (*src1));
if (src1_note)
abort();
/* Push the result back onto stack. Empty stack slot /* Push the result back onto stack. Empty stack slot
will be filled in second part of insn. */ will be filled in second part of insn. */
...@@ -1859,12 +1860,6 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat) ...@@ -1859,12 +1860,6 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
replace_reg (dest, FIRST_STACK_REG); replace_reg (dest, FIRST_STACK_REG);
} }
if (src1_note)
{
replace_reg (&XEXP (src1_note, 0), FIRST_STACK_REG);
regstack->top--;
CLEAR_HARD_REG_BIT (regstack->reg_set, REGNO (*src1));
}
replace_reg (src1, FIRST_STACK_REG); replace_reg (src1, FIRST_STACK_REG);
break; break;
...@@ -1878,7 +1873,11 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat) ...@@ -1878,7 +1873,11 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
emit_swap_insn (insn, regstack, *src1); emit_swap_insn (insn, regstack, *src1);
/* Input should never die, it is
replaced with output. */
src1_note = find_regno_note (insn, REG_DEAD, REGNO (*src1)); src1_note = find_regno_note (insn, REG_DEAD, REGNO (*src1));
if (src1_note)
abort();
/* Push the result back onto stack. Fill empty slot from /* Push the result back onto stack. Fill empty slot from
first part of insn and fix top of stack pointer. */ first part of insn and fix top of stack pointer. */
...@@ -1890,13 +1889,6 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat) ...@@ -1890,13 +1889,6 @@ subst_stack_regs_pat (rtx insn, stack regstack, rtx pat)
regstack->top++; regstack->top++;
} }
if (src1_note)
{
replace_reg (&XEXP (src1_note, 0), FIRST_STACK_REG);
regstack->top--;
CLEAR_HARD_REG_BIT (regstack->reg_set, REGNO (*src1));
}
replace_reg (src1, FIRST_STACK_REG); replace_reg (src1, FIRST_STACK_REG);
break; break;
......
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