aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dom.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-03-24 14:43:16 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-03-24 14:43:16 +0000
commita881aaa76995d244aec1a6126d5254756ebafdb9 (patch)
tree1d8153ce00daca65241e4fb2d0ed678e09967244 /gcc/tree-ssa-dom.c
parentdbaa912cc8f340546b006071be3a72bf948aed55 (diff)
downloadgcc-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.c6
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);