ifcvt.c (cond_exec_process_insns): Drop USE and CLOBBER insns that get in the way after reload.
* ifcvt.c (cond_exec_process_insns): Drop USE and CLOBBER insns that get in the way after reload. (cond_exec_process_if_block): Skip a label heading THEN block. From-SVN: r33923
This commit is contained in:
parent
085ce8c6ac
commit
7f9d9ea1ff
@ -1,3 +1,9 @@
|
|||||||
|
2000-05-15 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
|
* ifcvt.c (cond_exec_process_insns): Drop USE and CLOBBER insns
|
||||||
|
that get in the way after reload.
|
||||||
|
(cond_exec_process_if_block): Skip a label heading THEN block.
|
||||||
|
|
||||||
2000-05-15 Richard Henderson <rth@cygnus.com>
|
2000-05-15 Richard Henderson <rth@cygnus.com>
|
||||||
|
|
||||||
* varasm.c (output_constant_pool): Abort instead of converting
|
* varasm.c (output_constant_pool): Abort instead of converting
|
||||||
|
17
gcc/ifcvt.c
17
gcc/ifcvt.c
@ -197,6 +197,19 @@ cond_exec_process_insns (start, end, test, prob_val, mod_ok)
|
|||||||
if (GET_CODE (insn) != INSN && GET_CODE (insn) != CALL_INSN)
|
if (GET_CODE (insn) != INSN && GET_CODE (insn) != CALL_INSN)
|
||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
|
/* Remove USE and CLOBBER insns that get in the way. */
|
||||||
|
if (reload_completed
|
||||||
|
&& (GET_CODE (PATTERN (insn)) == USE
|
||||||
|
|| GET_CODE (PATTERN (insn)) == CLOBBER))
|
||||||
|
{
|
||||||
|
/* ??? Ug. Actually unlinking the thing is problematic,
|
||||||
|
given what we'd have to coordinate with our callers. */
|
||||||
|
PUT_CODE (insn, NOTE);
|
||||||
|
NOTE_LINE_NUMBER (insn) = NOTE_INSN_DELETED;
|
||||||
|
NOTE_SOURCE_FILE (insn) = 0;
|
||||||
|
goto insn_done;
|
||||||
|
}
|
||||||
|
|
||||||
/* Last insn wasn't last? */
|
/* Last insn wasn't last? */
|
||||||
if (must_be_last)
|
if (must_be_last)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@ -288,6 +301,10 @@ cond_exec_process_if_block (test_bb, then_bb, else_bb, join_bb)
|
|||||||
then_start = then_bb->head;
|
then_start = then_bb->head;
|
||||||
then_end = then_bb->end;
|
then_end = then_bb->end;
|
||||||
|
|
||||||
|
/* Skip a label heading THEN block. */
|
||||||
|
if (GET_CODE (then_start) == CODE_LABEL)
|
||||||
|
then_start = NEXT_INSN (then_start);
|
||||||
|
|
||||||
/* Skip a (use (const_int 0)) or branch as the final insn. */
|
/* Skip a (use (const_int 0)) or branch as the final insn. */
|
||||||
if (GET_CODE (then_end) == INSN
|
if (GET_CODE (then_end) == INSN
|
||||||
&& GET_CODE (PATTERN (then_end)) == USE
|
&& GET_CODE (PATTERN (then_end)) == USE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user