aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@redhat.com>2005-08-04 18:16:41 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2005-08-04 14:16:41 -0400
commitc4f548b8c5bd9b7178466ec69433f652bdc7e7f6 (patch)
tree14c04ed7180eb69104119cc479397db4833e81aa /gcc/passes.c
parent9ef524bac29974fbed968990aeb8ca887c228f13 (diff)
downloadgcc-c4f548b8c5bd9b7178466ec69433f652bdc7e7f6.zip
gcc-c4f548b8c5bd9b7178466ec69433f652bdc7e7f6.tar.gz
gcc-c4f548b8c5bd9b7178466ec69433f652bdc7e7f6.tar.bz2
re PR tree-optimization/22037 (internal compiler error: verify_ssa failed)
PR 22037 * tree-cfg.c (replace_uses_by): Call mark_new_vars_to_rename. (tree_merge_blocks): Propagate anything allowed by may_propagate_copy. Clarify documentation. * passes.c (execute_todo): If cleanup_tree_cfg invalidated the SSA form, schedule an update if necessary. testsuite/ChangeLog PR 22037 * g++.dg/tree-ssa/pr22037.C: From-SVN: r102740
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index 76f5da3..f199989 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -684,6 +684,15 @@ execute_todo (struct tree_opt_pass *pass, unsigned int flags, bool use_required)
cleanup_tree_cfg_loop ();
else
cleanup_tree_cfg ();
+
+ /* When cleanup_tree_cfg merges consecutive blocks, it may
+ perform some simplistic propagation when removing single
+ valued PHI nodes. This propagation may, in turn, cause the
+ SSA form to become out-of-date (see PR 22037). So, even
+ if the parent pass had not scheduled an SSA update, we may
+ still need to do one. */
+ if (!(flags & TODO_update_ssa_any) && need_ssa_update_p ())
+ flags |= TODO_update_ssa;
}
if (flags & TODO_update_ssa_any)