tree-ssa-operands.c (swap_tree_operands): Export.
authorDorit Nuzman <dorit@il.ibm.com>
Mon, 19 Sep 2005 14:54:28 +0000 (14:54 +0000)
committerDorit Nuzman <dorit@gcc.gnu.org>
Mon, 19 Sep 2005 14:54:28 +0000 (14:54 +0000)
        * tree-ssa-operands.c (swap_tree_operands): Export.
        * tree.h (swap_tree_operands): Declare.
        * tree-vectorizer.c (vect_is_simple_reduction): Remove ATTRIBUTE_UNUSED.
        Call swap_tree_operands.

From-SVN: r104421

gcc/ChangeLog
gcc/tree-ssa-operands.c
gcc/tree-vectorizer.c
gcc/tree.h

index 242cda2f3d16181c1e5327957b08f60c1a6b49cd..118b6b676a33e89c4d82a57f2c7855577ec1592e 100644 (file)
@@ -1,3 +1,10 @@
+2005-09-19  Dorit Nuzman  <dorit@il.ibm.com>
+
+       * tree-ssa-operands.c (swap_tree_operands): Export.
+       * tree.h (swap_tree_operands): Declare.
+       * tree-vectorizer.c (vect_is_simple_reduction): Remove ATTRIBUTE_UNUSED.
+       Call swap_tree_operands.
+       
 2005-09-19  Richard Henderson  <rth@redhat.com>
 
        * tree-flow.h (merge_alias_info): Declare.
index 0af1995553320e1149a40d32259012162693bf90..5b1e4454e4d979846525637ab10c8d3d4dd2f603 100644 (file)
@@ -1165,7 +1165,7 @@ create_ssa_artficial_load_stmt (tree new_stmt, tree old_stmt)
     delink_imm_use (use_p);
 }
 
-static void
+void
 swap_tree_operands (tree stmt, tree *exp0, tree *exp1)
 {
   tree op0, op1;
index 1e415cb9dd96520a8ceb18126e97aae18aaa265d..bc0f11ee3c7b4068a5c49d7e0de3c068f5a13b40 100644 (file)
@@ -1787,8 +1787,7 @@ reduction_code_for_scalar_code (enum tree_code code,
    Conditions 2,3 are tested in vect_mark_stmts_to_be_vectorized.  */
 
 tree
-vect_is_simple_reduction (struct loop *loop ATTRIBUTE_UNUSED, 
-                         tree phi ATTRIBUTE_UNUSED)
+vect_is_simple_reduction (struct loop *loop, tree phi)
 {
   edge latch_e = loop_latch_edge (loop);
   tree loop_arg = PHI_ARG_DEF_FROM_EDGE (phi, latch_e);
@@ -1930,9 +1929,6 @@ vect_is_simple_reduction (struct loop *loop ATTRIBUTE_UNUSED,
       && flow_bb_inside_loop_p (loop, bb_for_stmt (def2))
       && def1 == phi)
     {
-      use_operand_p use;
-      ssa_op_iter iter;
-
       /* Swap operands (just for simplicity - so that the rest of the code
         can assume that the reduction variable is always the last (second)
         argument).  */
@@ -1941,16 +1937,8 @@ vect_is_simple_reduction (struct loop *loop ATTRIBUTE_UNUSED,
           fprintf (vect_dump, "detected reduction: need to swap operands:");
           print_generic_expr (vect_dump, operation, TDF_SLIM);
         }
-
-      /* CHECKME */
-      FOR_EACH_SSA_USE_OPERAND (use, def_stmt, iter, SSA_OP_USE)
-        {
-          tree tuse = USE_FROM_PTR (use);
-          if (tuse == op1)
-            SET_USE (use, op2);
-          else if (tuse == op2)
-            SET_USE (use, op1);
-        }
+      swap_tree_operands (def_stmt, &TREE_OPERAND (operation, 0), 
+                                   &TREE_OPERAND (operation, 1));
       return def_stmt;
     }
   else
index fb3a6458d6bd6d8a09220639b6877ff149b9c665..198c4437f07e5b37dda2bdccca12cb8ef393f278 100644 (file)
@@ -3857,6 +3857,7 @@ extern tree constant_boolean_node (int, tree);
 extern tree build_low_bits_mask (tree, unsigned);
 
 extern bool tree_swap_operands_p (tree, tree, bool);
+extern void swap_tree_operands (tree, tree *, tree *);
 extern enum tree_code swap_tree_comparison (enum tree_code);
 
 extern bool ptr_difference_const (tree, tree, HOST_WIDE_INT *);