aboutsummaryrefslogtreecommitdiff
path: root/gcc/reload1.c
diff options
context:
space:
mode:
authorAndreas Krebbel <krebbel1@de.ibm.com>2005-09-07 07:52:48 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2005-09-07 07:52:48 +0000
commitb735f45d30e9e8aeadb4d6c3d01be4798da9a904 (patch)
tree02fbc8279361958c27d1a90d247dc04030a8e53c /gcc/reload1.c
parent30e6f306d3ac23bcf9b1dec1cff32f6009aca913 (diff)
downloadgcc-b735f45d30e9e8aeadb4d6c3d01be4798da9a904.zip
gcc-b735f45d30e9e8aeadb4d6c3d01be4798da9a904.tar.gz
gcc-b735f45d30e9e8aeadb4d6c3d01be4798da9a904.tar.bz2
reload1.c (fixup_eh_region_note): Remove assertion.
2005-09-07 Andreas Krebbel <krebbel1@de.ibm.com> * reload1.c (fixup_eh_region_note): Remove assertion. (fixup_abnormal_edges): Reverted removal of call to find_many_sub_basic_blocks made on 2005-08-31. From-SVN: r103984
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r--gcc/reload1.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 236afce..33840b5 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -3788,24 +3788,6 @@ fixup_eh_region_note (rtx insn, rtx prev, rtx next)
REG_NOTES (i)
= gen_rtx_EXPR_LIST (REG_EH_REGION, XEXP (note, 0), REG_NOTES (i));
}
-
- /* ??? Since we entered with one eh insn, we should exit with one eh insn;
- otherwise we're unsure that we're not losing an exception. Except that
- the instruction stream incoming to reload doesn't pass the "if
- reg_eh_region is present, may_trap_p is true" smoke test.
-
- Worse, even if it did, rtx_addr_can_trap_p returns false for some forms
- of address that include constants regardless of the actual value of the
- constant. If we decide that "int a[3]; a[100000]" should be considered
- non-trapping, we should get that story straight across more of the
- compiler. If we decide that it should trap, then we cannot decide
- may_trap_p on the basis of rtx_addr_can_trap_p at all. Which may not
- be such a big thing -- it doesn't seem hard to get MEM_NOTRAP_P set
- correctly in the first place.
-
- Fixing all that is not in the cards for gcc 4.2, so for the nonce we
- allow all eh insns to evaporate. */
- gcc_assert (trap_count <= 1);
}
/* Reload pseudo-registers into hard regs around each insn as needed.
@@ -8191,6 +8173,15 @@ fixup_abnormal_edges (void)
}
}
+ /* We've possibly turned single trapping insn into multiple ones. */
+ if (flag_non_call_exceptions)
+ {
+ sbitmap blocks;
+ blocks = sbitmap_alloc (last_basic_block);
+ sbitmap_ones (blocks);
+ find_many_sub_basic_blocks (blocks);
+ }
+
if (inserted)
commit_edge_insertions ();