cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns which cannot throw.
* cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns which cannot throw. From-SVN: r46863
This commit is contained in:
parent
6608bd4de4
commit
89753b3a90
2 changed files with 17 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-11-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns
|
||||
which cannot throw.
|
||||
|
||||
Thu Nov 8 18:00:55 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* explow.c (convert_memory_address, case SUBREG): Only return
|
||||
|
|
13
gcc/cfgrtl.c
13
gcc/cfgrtl.c
|
@ -1819,7 +1819,7 @@ purge_dead_edges (bb)
|
|||
basic_block bb;
|
||||
{
|
||||
edge e, next;
|
||||
rtx insn = bb->end;
|
||||
rtx insn = bb->end, note;
|
||||
bool purged = false;
|
||||
|
||||
if (GET_CODE (insn) == JUMP_INSN && !simplejump_p (insn))
|
||||
|
@ -1878,6 +1878,17 @@ purge_dead_edges (bb)
|
|||
return purged;
|
||||
}
|
||||
|
||||
/* If this instruction cannot trap, remove REG_EH_REGION notes. */
|
||||
if (GET_CODE (insn) == INSN
|
||||
&& (note = find_reg_note (insn, REG_EH_REGION, NULL)))
|
||||
{
|
||||
rtx eqnote;
|
||||
if (! may_trap_p (PATTERN (insn))
|
||||
|| ((eqnote = find_reg_equal_equiv_note (insn))
|
||||
&& ! may_trap_p (XEXP (eqnote, 0))))
|
||||
remove_note (insn, note);
|
||||
}
|
||||
|
||||
/* Cleanup abnormal edges caused by throwing insns that have been
|
||||
eliminated. */
|
||||
if (! can_throw_internal (bb->end))
|
||||
|
|
Loading…
Add table
Reference in a new issue