re PR target/27855 (reassociation causes the RA to be confused)
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 9 Jul 2007 19:22:03 +0000 (21:22 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 9 Jul 2007 19:22:03 +0000 (21:22 +0200)
        PR target/27855
        * doc/extend.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.

From-SVN: r126491

gcc/ChangeLog
gcc/common.opt
gcc/doc/invoke.texi
gcc/tree-ssa-reassoc.c

index ca82ac2..2c30159 100644 (file)
@@ -1,5 +1,13 @@
 2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
 
+       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  <ubizjak@gmail.com>
+
        PR tree-optimization/32681
        * tree-if-conv.c (find_phi_replacement_condition): Use the condition
        saved in second_edge->aux when first_bb is a loop header.
 2007-06-08  Harsha Jagasia <harsha.jagasia@amd.com>
            Tony Linthicum <tony.linthicum@amd.com>
 
-       * 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.
index c40a408..dfbbf92 100644 (file)
@@ -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
index f7487a1..6a4bc29 100644 (file)
@@ -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}.
index 448107b..a38290b 100644 (file)
@@ -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 */