aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDorit Nuzman <dorit@il.ibm.com>2006-01-29 16:50:05 +0000
committerDorit Nuzman <dorit@gcc.gnu.org>2006-01-29 16:50:05 +0000
commitb31305861ad77328af5fde14aae0a970e8cebb1b (patch)
tree18f25807d04bcac94fbcb9315db276a1065e2a80 /gcc
parenta920e94a9e87d680206d24e1a38902f3c5536c29 (diff)
downloadgcc-b31305861ad77328af5fde14aae0a970e8cebb1b.zip
gcc-b31305861ad77328af5fde14aae0a970e8cebb1b.tar.gz
gcc-b31305861ad77328af5fde14aae0a970e8cebb1b.tar.bz2
re PR tree-optimization/25911 (ice in vect_recog_dot_prod_pattern)
PR tree-opt/25911 * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Change assert to an if check. From-SVN: r110377
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/vect/fast-math-vect-pr25911.c15
-rw-r--r--gcc/tree-vect-patterns.c3
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index de09758..0c18c08 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index bd6eade..ecfd75c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..633382f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/fast-math-vect-pr25911.c
@@ -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" } } */
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 006965c..61d66e1 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -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;