aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-pre.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2009-08-08 15:32:36 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2009-08-08 15:32:36 +0000
commit55194b0b4161b80b20207bf893f7f0f6b60a900d (patch)
treee20762b87c260137c1f80eff5c8520b03fc6f9bd /gcc/tree-ssa-pre.c
parent9e0567dee2ee81e9da725fd82540c88a4827620c (diff)
downloadgcc-55194b0b4161b80b20207bf893f7f0f6b60a900d.zip
gcc-55194b0b4161b80b20207bf893f7f0f6b60a900d.tar.gz
gcc-55194b0b4161b80b20207bf893f7f0f6b60a900d.tar.bz2
re PR tree-optimization/40991 (ICE: at optimization -02)
2009-08-08 Richard Guenther <rguenther@suse.de> PR tree-optimization/40991 * tree-ssa-pre.c (eliminate): Delay purging EH edges. * g++.dg/torture/pr40991.C: New testcase. From-SVN: r150580
Diffstat (limited to 'gcc/tree-ssa-pre.c')
-rw-r--r--gcc/tree-ssa-pre.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index c09f3ae9..7a0533e 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4233,7 +4233,12 @@ eliminate (void)
gimple_call_set_fn (stmt, fn);
update_stmt (stmt);
if (maybe_clean_or_replace_eh_stmt (stmt, stmt))
- gimple_purge_dead_eh_edges (b);
+ {
+ bitmap_set_bit (need_eh_cleanup,
+ gimple_bb (stmt)->index);
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, " Removed EH side effects.\n");
+ }
/* Changing an indirect call to a direct call may
have exposed different semantics. This may