re PR tree-optimization/25911 (ice in vect_recog_dot_prod_pattern)
authorDorit Nuzman <dorit@il.ibm.com>
Sun, 29 Jan 2006 16:50:05 +0000 (16:50 +0000)
committerDorit Nuzman <dorit@gcc.gnu.org>
Sun, 29 Jan 2006 16:50:05 +0000 (16:50 +0000)
        PR tree-opt/25911
        * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert
        to an if check.

From-SVN: r110377

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

index de097583be8dbbb922d5023d7ae32d46f7db23a7..0c18c08451a23365aa3f124e6591c3217e2910d5 100644 (file)
@@ -1,3 +1,9 @@
+2006-01-29  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR tree-opt/25911
+       * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert
+       to an if check.
+
 2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
        * toplev.c: Fix thinko.
index bd6eade6dba13fe78f057e71fde9370d474456e9..ecfd75caca5f69457e98cad5fe06e1eedfedfd76 100644 (file)
@@ -1,3 +1,8 @@
+2006-01-29  Dorit Nuzman  <dorit@il.ibm.com>
+
+       PR tree-opt/25911
+       * gcc.dg/vect/fast-math-vect-pr25911.c: New.
+
 2006-01-29  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/18578
diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-vect-pr25911.c b/gcc/testsuite/gcc.dg/vect/fast-math-vect-pr25911.c
new file mode 100644 (file)
index 0000000..633382f
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+
+float bessel_Kn_scaled_small_x(int n)
+{
+  int k;
+  float k_term, sum1;
+  for(k=1; k<=n-1; k++)
+  {
+    k_term *= -1/(k * (n-k));
+    sum1 += k_term;
+  }
+  return sum1;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
index 006965cb99e881fbad8191cf3ebb7c7e77f22264..61d66e1ab474d0c18dfdd28a888b7c9f47ab1b06 100644 (file)
@@ -243,7 +243,8 @@ vect_recog_dot_prod_pattern (tree last_stmt, tree *type_in, tree *type_out)
   gcc_assert (stmt);
   stmt_vinfo = vinfo_for_stmt (stmt);
   gcc_assert (stmt_vinfo);
-  gcc_assert (STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_loop_def);
+  if (STMT_VINFO_DEF_TYPE (stmt_vinfo) != vect_loop_def)
+    return NULL;
   expr = TREE_OPERAND (stmt, 1);
   if (TREE_CODE (expr) != MULT_EXPR)
     return NULL;