diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-08 19:31:18 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-09-08 19:31:18 +0000 |
commit | c8c258fe6db58d94e28d1008291ff2911ff658bf (patch) | |
tree | a54110c3122e438cc13741215d76b6c9b404f677 /gcc/tree-ssa-dom.c | |
parent | 0cce97a638ada18d399567b3f500827d9ae19d0e (diff) | |
download | gcc-c8c258fe6db58d94e28d1008291ff2911ff658bf.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140117 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-dom.c')
-rw-r--r-- | gcc/tree-ssa-dom.c | 10 |
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; |