From 3e0a08d7115f4623f580e111230561a5740c4c18 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Fri, 10 Mar 2006 01:22:54 +0000 Subject: tree-ssa-phiopt.c (tree_ssa_phiopt): Add cfgchanged variable. 2006-03-09 Andrew Pinski * 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) : Remove TODO_cleanup_cfg. From-SVN: r111920 --- gcc/tree-ssa-phiopt.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'gcc/tree-ssa-phiopt.c') diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index ff96065..a005991 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 -- cgit v1.1