]> gcc.gnu.org Git - gcc.git/commitdiff
tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo access on whether the use...
authorRichard Biener <rguenther@suse.de>
Wed, 29 May 2013 08:44:23 +0000 (08:44 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 29 May 2013 08:44:23 +0000 (08:44 +0000)
2013-05-29  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo
access on whether the use is in the BB we currently try to
vectorize.
(vect_bb_vectorization_profitable_p): Pass the BB we currently
vectorize to vect_bb_slp_scalar_cost.

From-SVN: r199403

gcc/ChangeLog
gcc/tree-vect-slp.c

index 456a4cf87f2d60cda25bb6ead4c4c31c3f49753a..012c7c4af650c33f5d0b2c4fbddef90e9a256f19 100644 (file)
@@ -1,3 +1,11 @@
+2013-05-29  Richard Biener  <rguenther@suse.de>
+
+       * tree-vect-slp.c (vect_bb_slp_scalar_cost): Guard vinfo
+       access on whether the use is in the BB we currently try to
+       vectorize.
+       (vect_bb_vectorization_profitable_p): Pass the BB we currently
+       vectorize to vect_bb_slp_scalar_cost.
+
 2013-05-29  Richard Biener  <rguenther@suse.de>
 
        * tree-vect-slp.c (vect_bb_slp_scalar_cost): New function
index 5d8e85f16a62b5bae95adbd103a9027cf0148705..3dde0636e0f1541e0e7b413e63db49d13f500229 100644 (file)
@@ -1904,7 +1904,8 @@ vect_slp_analyze_operations (bb_vec_info bb_vinfo)
    update LIFE according to uses of NODE.  */
 
 static unsigned
-vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life)
+vect_bb_slp_scalar_cost (basic_block bb,
+                        slp_tree node, vec<bool, va_stack> life)
 {
   unsigned scalar_cost = 0;
   unsigned i;
@@ -1931,7 +1932,7 @@ vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life)
          imm_use_iterator use_iter;
          gimple use_stmt;
          FOR_EACH_IMM_USE_STMT (use_stmt, use_iter, DEF_FROM_PTR (def_p))
-           if (!vinfo_for_stmt (use_stmt)
+           if (gimple_bb (use_stmt) != bb
                || !STMT_VINFO_VECTORIZABLE (vinfo_for_stmt (use_stmt)))
              {
                life[i] = true;
@@ -1956,7 +1957,7 @@ vect_bb_slp_scalar_cost (slp_tree node, vec<bool, va_stack> life)
     }
 
   FOR_EACH_VEC_ELT (SLP_TREE_CHILDREN (node), i, child)
-    scalar_cost += vect_bb_slp_scalar_cost (child, life);
+    scalar_cost += vect_bb_slp_scalar_cost (bb, child, life);
 
   return scalar_cost;
 }
@@ -1995,7 +1996,8 @@ vect_bb_vectorization_profitable_p (bb_vec_info bb_vinfo)
       vec<bool, va_stack> life;
       vec_stack_alloc (bool, life, SLP_INSTANCE_GROUP_SIZE (instance));
       life.quick_grow_cleared (SLP_INSTANCE_GROUP_SIZE (instance));
-      scalar_cost += vect_bb_slp_scalar_cost (SLP_INSTANCE_TREE (instance),
+      scalar_cost += vect_bb_slp_scalar_cost (BB_VINFO_BB (bb_vinfo),
+                                             SLP_INSTANCE_TREE (instance),
                                              life);
       life.release ();
     }
This page took 0.083036 seconds and 5 git commands to generate.