aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorDiego Novillo <dnovillo@redhat.com>2005-07-09 17:35:05 +0000
committerDiego Novillo <dnovillo@gcc.gnu.org>2005-07-09 13:35:05 -0400
commit563cb6be0f31cea2cece0482aff2ede0acc1d259 (patch)
tree10e3c61c624d9fda48e1baf168a72b816d391674 /gcc/passes.c
parent7c6ef73e9bc4d5a334efc3ca87f2c9d67a06efda (diff)
downloadgcc-563cb6be0f31cea2cece0482aff2ede0acc1d259.zip
gcc-563cb6be0f31cea2cece0482aff2ede0acc1d259.tar.gz
gcc-563cb6be0f31cea2cece0482aff2ede0acc1d259.tar.bz2
re PR tree-optimization/21356 (Dominance error after aggressive dead code elimination (cd_dce))
PR 21356 PR 22332 * passes.c (execute_todo): Cleanup the CFG before updating SSA. From-SVN: r101832
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index 8d1411a..abc44e4 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -666,12 +666,7 @@ execute_todo (struct tree_opt_pass *pass, unsigned int flags, bool use_required)
gcc_assert (flags & TODO_update_ssa_any);
#endif
- if (flags & TODO_update_ssa_any)
- {
- unsigned update_flags = flags & TODO_update_ssa_any;
- update_ssa (update_flags);
- }
-
+ /* Always cleanup the CFG before doing anything else. */
if (flags & TODO_cleanup_cfg)
{
if (current_loops)
@@ -680,6 +675,12 @@ execute_todo (struct tree_opt_pass *pass, unsigned int flags, bool use_required)
cleanup_tree_cfg ();
}
+ if (flags & TODO_update_ssa_any)
+ {
+ unsigned update_flags = flags & TODO_update_ssa_any;
+ update_ssa (update_flags);
+ }
+
if ((flags & TODO_dump_func)
&& dump_file && current_function_decl)
{