diff options
author | Richard Guenther <rguenther@suse.de> | 2010-08-25 12:53:30 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-08-25 12:53:30 +0000 |
commit | a2c0ed2ee91b8e30a47466ce3a18779248718c1b (patch) | |
tree | da1565336f65c5b40e2c7bf1103066ef5de9eb74 /gcc/tree-ssa-pre.c | |
parent | 90bc1cb81b70ba0635cc18d84d65230e68c8c48c (diff) | |
download | gcc-a2c0ed2ee91b8e30a47466ce3a18779248718c1b.zip gcc-a2c0ed2ee91b8e30a47466ce3a18779248718c1b.tar.gz gcc-a2c0ed2ee91b8e30a47466ce3a18779248718c1b.tar.bz2 |
re PR middle-end/45316 (ICE: verify_flow_info failed: BB 3 can not throw but has an EH edge with -O1 -ftree-pre -fnon-call-exceptions)
2010-08-25 Richard Guenther <rguenther@suse.de>
PR tree-optimization/45316
* tree-ssa-pre.c (eliminate): Properly clean EH info.
* g++.dg/opt/pr45316.C: New testcase.
From-SVN: r163543
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r-- | gcc/tree-ssa-pre.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index 6d48123..fd3da9e 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -4498,9 +4498,12 @@ eliminate (void) if (TREE_CODE (lhs) != SSA_NAME || has_zero_uses (lhs)) { + basic_block bb = gimple_bb (stmt); gsi = gsi_for_stmt (stmt); unlink_stmt_vdef (stmt); gsi_remove (&gsi, true); + if (gimple_purge_dead_eh_edges (bb)) + todo |= TODO_cleanup_cfg; if (TREE_CODE (lhs) == SSA_NAME) bitmap_clear_bit (inserted_exprs, SSA_NAME_VERSION (lhs)); release_defs (stmt); |