diff options
author | Dorit Nuzman <dorit@il.ibm.com> | 2006-01-29 16:50:05 +0000 |
---|---|---|
committer | Dorit Nuzman <dorit@gcc.gnu.org> | 2006-01-29 16:50:05 +0000 |
commit | b31305861ad77328af5fde14aae0a970e8cebb1b (patch) | |
tree | 18f25807d04bcac94fbcb9315db276a1065e2a80 /gcc | |
parent | a920e94a9e87d680206d24e1a38902f3c5536c29 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/fast-math-vect-pr25911.c | 15 | ||||
-rw-r--r-- | gcc/tree-vect-patterns.c | 3 |
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; |