summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-dom.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-09-08 21:31:18 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2008-09-08 21:31:18 +0200
commitc5cac099b7420d4c3df6664edd8e6e2f92909b70 (patch)
treea54110c3122e438cc13741215d76b6c9b404f677 /gcc/tree-ssa-dom.c
parent7220ca2b3822219e56497f4d18ceb043656acb71 (diff)
downloadgcc-c5cac099b7420d4c3df6664edd8e6e2f92909b70.tar.gz
re PR middle-end/37337 (ICE: verify_flow_info failed)
PR middle-end/37337 * tree-ssa-dom.c (optimize_stmt): Call maybe_clean_or_replace_eh_stmt even when a stmt has been gimple_modified_p, but after fold_stmt is not any longer. Remove unneeded may_have_exposed_new_symbols initializations. * g++.dg/tree-ssa/pr37337.C: New test. From-SVN: r140117
Diffstat (limited to 'gcc/tree-ssa-dom.c')
-rw-r--r--gcc/tree-ssa-dom.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index cd7defa869c..bf2049eb8d8 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -2179,7 +2179,8 @@ optimize_stmt (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
{
gimple stmt, old_stmt;
bool may_optimize_p;
- bool may_have_exposed_new_symbols = false;
+ bool may_have_exposed_new_symbols;
+ bool modified_p = false;
old_stmt = stmt = gsi_stmt (si);
@@ -2188,7 +2189,6 @@ optimize_stmt (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
update_stmt_if_modified (stmt);
opt_stats.num_stmts++;
- may_have_exposed_new_symbols = false;
push_stmt_changes (gsi_stmt_ptr (&si));
if (dump_file && (dump_flags & TDF_DETAILS))
@@ -2237,6 +2237,10 @@ optimize_stmt (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
Indicate we will need to rescan and rewrite the statement. */
may_have_exposed_new_symbols = true;
+ /* Indicate that maybe_clean_or_replace_eh_stmt needs to be called,
+ even if fold_stmt updated the stmt already and thus cleared
+ gimple_modified_p flag on it. */
+ modified_p = true;
}
/* Check for redundant computations. Do this optimization only
@@ -2285,7 +2289,7 @@ optimize_stmt (struct dom_walk_data *walk_data ATTRIBUTE_UNUSED,
Ultimately I suspect we're going to need to change the interface
into the SSA_NAME manager. */
- if (gimple_modified_p (stmt))
+ if (gimple_modified_p (stmt) || modified_p)
{
tree val = NULL;