tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that vectype is not NULL.
authorIra Rosen <irar@il.ibm.com>
Tue, 6 Feb 2007 08:41:01 +0000 (08:41 +0000)
committerIra Rosen <irar@gcc.gnu.org>
Tue, 6 Feb 2007 08:41:01 +0000 (08:41 +0000)
* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that
vectype is not NULL.
(vect_pattern_recog_1): Likewise.

From-SVN: r121640

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/fast-math-vect-pow-2.c [new file with mode: 0644]
gcc/tree-vect-patterns.c

index 947df6f..9207c8e 100644 (file)
@@ -1,3 +1,9 @@
+2007-02-06  Ira Rosen  <irar@il.ibm.com>
+
+       * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that 
+       vectype is not NULL.
+       (vect_pattern_recog_1): Likewise.
+
 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * fold-const.c (negate_expr_p): Handle CONJ_EXPR.
index f22064a..3f676a8 100644 (file)
@@ -1,3 +1,7 @@
+2007-02-06  Ira Rosen  <irar@il.ibm.com> 
+
+       * gcc.dg/vect/fast-math-vect-pow-2.c: New test.
+
 2007-02-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * gcc.dg/builtins-20.c: Add more cases.
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-vect-pow-2.c b/gcc/testsuite/gcc.dg/vect/fast-math-vect-pow-2.c
new file mode 100644 (file)
index 0000000..a9d927b
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do compile } */
+
+typedef double d_type;
+struct
+{
+  d_type x;
+  d_type y;
+} S[100];
+
+#define N 16
+d_type foo (d_type t);
+
+d_type
+main1 ()
+{
+  int i;
+  d_type t;
+
+  for (i = 0; i < N; i++)
+    {
+      t = (d_type) i / (d_type) 10;
+      S[5].x = t * t;
+    }
+  return S[5].x;
+}
+
+int
+main (void)
+{
+  d_type tmp = main1 ();
+}
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
index c9e34e3..9fac417 100644 (file)
@@ -386,7 +386,8 @@ vect_recog_widen_mult_pattern (tree last_stmt,
 
   /* Check target support  */
   vectype = get_vectype_for_scalar_type (half_type0);
-  if (!supportable_widening_operation (WIDEN_MULT_EXPR, last_stmt, vectype,
+  if (!vectype
+      || !supportable_widening_operation (WIDEN_MULT_EXPR, last_stmt, vectype,
                                        &dummy, &dummy, &dummy_code,
                                        &dummy_code))
     return NULL;
@@ -647,6 +648,9 @@ vect_pattern_recog_1 (
 
       /* Check target support  */
       pattern_vectype = get_vectype_for_scalar_type (type_in);
+      if (!pattern_vectype)
+        return;
+
       optab = optab_for_tree_code (TREE_CODE (pattern_expr), pattern_vectype);
       vec_mode = TYPE_MODE (pattern_vectype);
       if (!optab