diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2006-03-10 01:22:54 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2006-03-09 17:22:54 -0800 |
commit | 3e0a08d7115f4623f580e111230561a5740c4c18 (patch) | |
tree | 41090d7b945a287821c1684a417efe538999f9bd /gcc/tree-ssa-phiopt.c | |
parent | 0ade2ddf23d75245e4e9f0783604ece21a12be79 (diff) | |
download | gcc-3e0a08d7115f4623f580e111230561a5740c4c18.tar.gz |
tree-ssa-phiopt.c (tree_ssa_phiopt): Add cfgchanged variable.
2006-03-09 Andrew Pinski <pinskia@physics.uc.edu>
* tree-ssa-phiopt.c (tree_ssa_phiopt): Add cfgchanged variable.
Set it when one of the replacement functions returned true.
Return TODO_cleanup_cfg if cfgchanged is true.
(pass_phiopt) <todo_flags_finish>: Remove TODO_cleanup_cfg.
From-SVN: r111920
Diffstat (limited to 'gcc/tree-ssa-phiopt.c')
-rw-r--r-- | gcc/tree-ssa-phiopt.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index ff96065eb41..a0059919650 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -139,6 +139,7 @@ tree_ssa_phiopt (void) basic_block bb; basic_block *bb_order; unsigned n, i; + bool cfgchanged = false; /* Search every basic block for COND_EXPR we may be able to optimize. @@ -227,17 +228,19 @@ tree_ssa_phiopt (void) /* Do the replacement of conditional if it can be done. */ if (conditional_replacement (bb, bb1, e1, e2, phi, arg0, arg1)) - ; + cfgchanged = true; else if (value_replacement (bb, bb1, e1, e2, phi, arg0, arg1)) - ; + cfgchanged = true; else if (abs_replacement (bb, bb1, e1, e2, phi, arg0, arg1)) - ; - else - minmax_replacement (bb, bb1, e1, e2, phi, arg0, arg1); + cfgchanged = true; + else if (minmax_replacement (bb, bb1, e1, e2, phi, arg0, arg1)) + cfgchanged = true; } free (bb_order); - return 0; + + /* If the CFG has changed, we should cleanup the CFG. */ + return cfgchanged ? TODO_cleanup_cfg : 0; } /* Returns the list of basic blocks in the function in an order that guarantees @@ -1010,8 +1013,7 @@ struct tree_opt_pass pass_phiopt = 0, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_cleanup_cfg - | TODO_dump_func + TODO_dump_func | TODO_ggc_collect | TODO_verify_ssa | TODO_verify_flow |