diff options
author | Richard Guenther <rguenther@suse.de> | 2011-03-24 14:43:16 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-03-24 14:43:16 +0000 |
commit | a881aaa76995d244aec1a6126d5254756ebafdb9 (patch) | |
tree | 1d8153ce00daca65241e4fb2d0ed678e09967244 /gcc/tree-ssa-dom.c | |
parent | dbaa912cc8f340546b006071be3a72bf948aed55 (diff) | |
download | gcc-a881aaa76995d244aec1a6126d5254756ebafdb9.zip gcc-a881aaa76995d244aec1a6126d5254756ebafdb9.tar.gz gcc-a881aaa76995d244aec1a6126d5254756ebafdb9.tar.bz2 |
re PR tree-optimization/48271 (ICE: SIGSEGV in tree_ssa_dominator_optimize (tree-ssa-dom.c:2964) with -O -ftree-vrp -fno-guess-branch-probability -fnon-call-exceptions)
2011-03-24 Richard Guenther <rguenther@suse.de>
PR tree-optimization/48271
* tree-ssa-dom.c (tree_ssa_dominator_optimize): Only cleanup
blocks that still exist.
* g++.dg/torture/pr48271.C: New testcase.
From-SVN: r171395
Diffstat (limited to 'gcc/tree-ssa-dom.c')
-rw-r--r-- | gcc/tree-ssa-dom.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index fc87c46..0f649f3 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -701,7 +701,8 @@ tree_ssa_dominator_optimize (void) gimple_stmt_iterator gsi; basic_block bb; FOR_EACH_BB (bb) - {for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + { + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) update_stmt_if_modified (gsi_stmt (gsi)); } } @@ -734,7 +735,8 @@ tree_ssa_dominator_optimize (void) EXECUTE_IF_SET_IN_BITMAP (need_eh_cleanup, 0, i, bi) { basic_block bb = BASIC_BLOCK (i); - if (single_succ_p (bb) == 1 + if (bb + && single_succ_p (bb) && (single_succ_edge (bb)->flags & EDGE_EH) == 0) { bitmap_clear_bit (need_eh_cleanup, i); |