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>
|
||||
|
||||
* 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)
|
||||
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? */
|
||||
if (must_be_last)
|
||||
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_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. */
|
||||
if (GET_CODE (then_end) == INSN
|
||||
&& GET_CODE (PATTERN (then_end)) == USE
|
||||
|
Loading…
Reference in New Issue
Block a user