OSDN Git Service

PR tree-optimization/43901
authorirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 May 2010 06:42:51 +0000 (06:42 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:00:23 +0000 (14:00 +0900)
* tree-vect-stmts.c (vectorizable_call): Assert that vector
type is not NULL if it's transformation phase, and return
FALSE if it's analysis.
(vectorizable_conversion, vectorizable_operation,
vectorizable_type_demotion, vectorizable_type_promotion):
Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159095 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 3a5973b..cfc1629 100644 (file)
@@ -1,3 +1,13 @@
+2010-05-06  Ira Rosen  <irar@il.ibm.com>
+
+       PR tree-optimization/43901
+       * tree-vect-stmts.c (vectorizable_call): Assert that vector
+       type is not NULL if it's transformation phase, and return
+       FALSE if it's analysis.
+       (vectorizable_conversion, vectorizable_operation, 
+       vectorizable_type_demotion, vectorizable_type_promotion):
+       Likewise.
+
 2010-05-05  Andrew Pinski  <andrew.pinski@caviumnetworks.com>
 
        * config/mips/mips.h (TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P):
index 0dabb6a..a2c2e20 100644 (file)
@@ -1304,6 +1304,18 @@ vectorizable_call (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt)
      the same size as the output vector type.  */
   if (!vectype_in)
     vectype_in = get_same_sized_vectype (rhs_type, vectype_out);
+  if (vec_stmt)
+    gcc_assert (vectype_in);
+  if (!vectype_in)
+    {
+      if (vect_print_dump_info (REPORT_DETAILS))
+        {
+          fprintf (vect_dump, "no vectype for scalar type ");
+          print_generic_expr (vect_dump, rhs_type, TDF_SLIM);
+        }
+
+      return false;
+    }
 
   /* FORNOW */
   nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in);
@@ -1606,6 +1618,18 @@ vectorizable_conversion (gimple stmt, gimple_stmt_iterator *gsi,
      the same size as the output vector type.  */
   if (!vectype_in)
     vectype_in = get_same_sized_vectype (rhs_type, vectype_out);
+  if (vec_stmt)
+    gcc_assert (vectype_in);
+  if (!vectype_in)
+    {
+      if (vect_print_dump_info (REPORT_DETAILS))
+        {
+          fprintf (vect_dump, "no vectype for scalar type ");
+          print_generic_expr (vect_dump, rhs_type, TDF_SLIM);
+        }
+
+      return false;
+    }
 
   /* FORNOW */
   nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in);
@@ -1986,7 +2010,18 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
      the same size as the output vector type.  */
   if (!vectype)
     vectype = get_same_sized_vectype (TREE_TYPE (op0), vectype_out);
-  gcc_assert (vectype);
+  if (vec_stmt)
+    gcc_assert (vectype);
+  if (!vectype)
+    {
+      if (vect_print_dump_info (REPORT_DETAILS))
+        {
+          fprintf (vect_dump, "no vectype for scalar type ");
+          print_generic_expr (vect_dump, TREE_TYPE (op0), TDF_SLIM);
+        }
+
+      return false;
+    }
 
   nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out);
   nunits_in = TYPE_VECTOR_SUBPARTS (vectype);
@@ -2449,8 +2484,18 @@ vectorizable_type_demotion (gimple stmt, gimple_stmt_iterator *gsi,
      same size as the output vector type if possible.  */
   if (!vectype_in)
     vectype_in = get_same_sized_vectype (TREE_TYPE (op0), vectype_out);
+  if (vec_stmt)
+    gcc_assert (vectype_in);
   if (!vectype_in)
-    return false;
+    {
+      if (vect_print_dump_info (REPORT_DETAILS))
+        {
+          fprintf (vect_dump, "no vectype for scalar type ");
+          print_generic_expr (vect_dump, TREE_TYPE (op0), TDF_SLIM);
+        }
+
+      return false;
+    }
 
   nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in);
   nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out);
@@ -2718,8 +2763,18 @@ vectorizable_type_promotion (gimple stmt, gimple_stmt_iterator *gsi,
      the same size as the output vector type.  */
   if (!vectype_in)
     vectype_in = get_same_sized_vectype (TREE_TYPE (op0), vectype_out);
+  if (vec_stmt)
+    gcc_assert (vectype_in);
   if (!vectype_in)
-    return false;
+    {
+      if (vect_print_dump_info (REPORT_DETAILS))
+        {
+          fprintf (vect_dump, "no vectype for scalar type ");
+          print_generic_expr (vect_dump, TREE_TYPE (op0), TDF_SLIM);
+        }
+
+      return false;
+    }
 
   nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in);
   nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out);