From: Jakub Jelinek Date: Thu, 8 Nov 2001 23:14:26 +0000 (+0100) Subject: cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns which cannot throw. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=89753b3a903366fb53a324206a176d53d04d419e;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06fa1f65f0f..6535209c971 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-11-09 Jakub Jelinek + + * cfgrtl.c (purge_dead_edges): Remove REG_EH_REGION note for insns + which cannot throw. + Thu Nov 8 18:00:55 2001 Richard Kenner * explow.c (convert_memory_address, case SUBREG): Only return diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 2987a506618..5d785cafb50 100644 --- a/gcc/cfgrtl.c +++ b/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))