(jump_optimize): Tighten up test for when we can't delete a set of CC0.
Don't insert insns between set and use of CC0. From-SVN: r2217
This commit is contained in:
parent
b6c9b49af9
commit
01ca1b9182
15
gcc/jump.c
15
gcc/jump.c
@ -1040,7 +1040,9 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
|
|||||||
|
|
||||||
&& ! ((temp6 = prev_nonnote_insn (insn)) != 0
|
&& ! ((temp6 = prev_nonnote_insn (insn)) != 0
|
||||||
&& GET_CODE (temp6) == INSN
|
&& GET_CODE (temp6) == INSN
|
||||||
&& sets_cc0_p (PATTERN (temp6)) == -1)
|
&& (sets_cc0_p (PATTERN (temp6)) == -1
|
||||||
|
|| (sets_cc0_p (PATTERN (temp6)) == 1
|
||||||
|
&& FIND_REG_INC_NOTE (temp6, NULL_RTX))))
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -1088,6 +1090,7 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
|
|||||||
normalizep);
|
normalizep);
|
||||||
if (target)
|
if (target)
|
||||||
{
|
{
|
||||||
|
rtx before = insn;
|
||||||
rtx seq;
|
rtx seq;
|
||||||
|
|
||||||
/* Put the store-flag insns in front of the first insn
|
/* Put the store-flag insns in front of the first insn
|
||||||
@ -1143,7 +1146,15 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
|
|||||||
seq = get_insns ();
|
seq = get_insns ();
|
||||||
end_sequence ();
|
end_sequence ();
|
||||||
|
|
||||||
emit_insns_before (seq, insn);
|
#ifdef HAVE_cc0
|
||||||
|
/* If INSN uses CC0, we must not separate it from the
|
||||||
|
insn that sets cc0. */
|
||||||
|
|
||||||
|
if (reg_mentioned_p (cc0_rtx, PATTERN (before)))
|
||||||
|
before = prev_nonnote_insn (before);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
emit_insns_before (seq, before);
|
||||||
|
|
||||||
delete_insn (temp);
|
delete_insn (temp);
|
||||||
next = NEXT_INSN (insn);
|
next = NEXT_INSN (insn);
|
||||||
|
Loading…
Reference in New Issue
Block a user