From: rguenth Date: Mon, 6 Dec 2010 10:05:07 +0000 (+0000) Subject: 2010-12-06 Richard Guenther X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=1e845e91d47647aea50c643f65b68a47bc57dd82 2010-12-06 Richard Guenther PR tree-optimization/46785 * tree-vect-loop.c (vect_is_simple_reduction_1): Also allow call statements as operand definition. * gcc.dg/vect/fast-math-vect-reduc-9.c: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167486 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c3f25a508d9..ccb7019fa41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-12-06 Richard Guenther + + PR tree-optimization/46785 + * tree-vect-loop.c (vect_is_simple_reduction_1): Also allow + call statements as operand definition. + 2010-12-06 Mingjie Xing * doc/tm.texi.in: Fix typo. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 01878fe2c0a..600655d1d2c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-06 Richard Guenther + + PR tree-optimization/46785 + * gcc.dg/vect/fast-math-vect-reduc-9.c: New testcase. + 2010-12-06 Dave Korn * gcc.dg/pr46674.c (LABEL3): New macro definition. diff --git a/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-9.c b/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-9.c new file mode 100644 index 00000000000..eb703f5af86 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-9.c @@ -0,0 +1,30 @@ +/* { dg-require-effective-target vect_float } */ + +#include "tree-vect.h" + +float x[1024]; +float +test (void) +{ + int i; + float gosa = 0.0; + for (i = 0; i < 1024; ++i) + { + float tem = x[i]; + gosa += tem * tem; + } + return gosa; +} + +int main (void) +{ + check_vect (); + + if (test () != 0.0) + abort (); + + return 0; +} + +/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */ +/* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index 3aa77d6ec10..2644c9e4349 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -1970,6 +1970,7 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi, && (code == COND_EXPR || (def1 && flow_bb_inside_loop_p (loop, gimple_bb (def1)) && (is_gimple_assign (def1) + || is_gimple_call (def1) || STMT_VINFO_DEF_TYPE (vinfo_for_stmt (def1)) == vect_induction_def || (gimple_code (def1) == GIMPLE_PHI @@ -1985,6 +1986,7 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi, && (code == COND_EXPR || (def2 && flow_bb_inside_loop_p (loop, gimple_bb (def2)) && (is_gimple_assign (def2) + || is_gimple_call (def2) || STMT_VINFO_DEF_TYPE (vinfo_for_stmt (def2)) == vect_induction_def || (gimple_code (def2) == GIMPLE_PHI