diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca82ac2f540..2c301591a95 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2007-07-09 Uros Bizjak + + PR target/27855 + * doc/invoke.texi: Add ftree-reassoc flag. + * common.opt (ftree-reassoc): New flag. + * tree-ssa-reassoc.c (gate_tree_ssa_reassoc): New static function. + (struct tree_opt_pass pass_reassoc): Use gate_tree_ssa_reassoc. + 2007-07-09 Uros Bizjak PR tree-optimization/32681 @@ -2848,7 +2856,7 @@ 2007-06-08 Harsha Jagasia Tony Linthicum - * doc/extend.texi: Add fvect-cost-model flag. + * doc/invoke.texi: Add fvect-cost-model flag. * common.opt (fvect-cost-model): New flag. * tree-vectorizer.c (new_stmt_vec_info): Initialize inside and outside cost fields in stmt_vec_info struct for STMT. diff --git a/gcc/common.opt b/gcc/common.opt index c40a408cb9e..dfbbf92f10a 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1063,6 +1063,10 @@ ftree-pre Common Report Var(flag_tree_pre) Optimization Enable SSA-PRE optimization on trees +ftree-reassoc +Common Report Var(flag_tree_reassoc) Init(1) Optimization +Enable reassociation on tree level + ftree-salias Common Report Var(flag_tree_salias) Optimization Perform structural alias analysis diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index f7487a1ec59..6a4bc299c2a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -353,7 +353,7 @@ Objective-C and Objective-C++ Dialects}. -fstrict-aliasing -fstrict-overflow -ftracer -fthread-jumps @gol -funroll-all-loops -funroll-loops -fpeel-loops @gol -fsplit-ivs-in-unroller -funswitch-loops @gol --fvariable-expansion-in-unroller @gol +-fvariable-expansion-in-unroller -ftree-reassoc @gol -ftree-pre -ftree-ccp -ftree-dce -ftree-loop-optimize @gol -ftree-loop-linear -ftree-loop-im -ftree-loop-ivcanon -fivopts @gol -fcheck-data-deps @gol @@ -5584,9 +5584,9 @@ ones to optimal placement using LCM. @item -freschedule-modulo-scheduled-loops @opindex fscheduling-in-modulo-scheduled-loops -The modulo scheduling comes before the traditional scheduling, if a loop was modulo scheduled -we may want to prevent the later scheduling passes from changing its schedule, we use this -option to control that. +The modulo scheduling comes before the traditional scheduling, if a loop +was modulo scheduled we may want to prevent the later scheduling passes +from changing its schedule, we use this option to control that. @item -fcaller-saves @opindex fcaller-saves @@ -5600,6 +5600,10 @@ those which have no call-preserved registers to use instead. Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}. +@item -ftree-reassoc +Perform Reassociation on trees This flag is enabled by default +at @option{-O} and higher. + @item -ftree-pre Perform Partial Redundancy Elimination (PRE) on trees. This flag is enabled by default at @option{-O2} and @option{-O3}. diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c index 448107b2d72..a38290b8576 100644 --- a/gcc/tree-ssa-reassoc.c +++ b/gcc/tree-ssa-reassoc.c @@ -1476,15 +1476,21 @@ execute_reassoc (void) return 0; } +static bool +gate_tree_ssa_reassoc (void) +{ + return flag_tree_reassoc != 0; +} + struct tree_opt_pass pass_reassoc = { "reassoc", /* name */ - NULL, /* gate */ - execute_reassoc, /* execute */ + gate_tree_ssa_reassoc, /* gate */ + execute_reassoc, /* execute */ NULL, /* sub */ NULL, /* next */ 0, /* static_pass_number */ - TV_TREE_REASSOC, /* tv_id */ + TV_TREE_REASSOC, /* tv_id */ PROP_cfg | PROP_ssa | PROP_alias, /* properties_required */ 0, /* properties_provided */ 0, /* properties_destroyed */