aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop.c
diff options
context:
space:
mode:
authorIra Rosen <irar@il.ibm.com>2010-11-04 11:51:09 +0000
committerIra Rosen <irar@gcc.gnu.org>2010-11-04 11:51:09 +0000
commit0532869d0595b5ae8a45a6ca9eceab25fa8b2958 (patch)
treee375ba076793adb2ad4aee99238ae93f7d3f40bf /gcc/tree-vect-loop.c
parente4d8d4ea194dd8a360a3e21474296807984fc833 (diff)
downloadgcc-0532869d0595b5ae8a45a6ca9eceab25fa8b2958.zip
gcc-0532869d0595b5ae8a45a6ca9eceab25fa8b2958.tar.gz
gcc-0532869d0595b5ae8a45a6ca9eceab25fa8b2958.tar.bz2
re PR tree-optimization/46213 (gfortran.dg/aliasing_array_result_1.f90 ICE: in vectorizable_reduction, at tree-vect-loop.c:4046 with custom compiler flags)
PR tree-optimization/46213 * tree-vect-loop.c (vect_is_simple_reduction_1): Handle MINUS_EXPR only if the first operand is reduction operand. From-SVN: r166306
Diffstat (limited to 'gcc/tree-vect-loop.c')
-rw-r--r--gcc/tree-vect-loop.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 57ca5a8..bc87965 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -1800,7 +1800,11 @@ vect_is_simple_reduction_1 (loop_vec_info loop_info, gimple phi,
simply rewriting this into "res += -x[i]". Avoid changing
gimple instruction for the first simple tests and only do this
if we're allowed to change code at all. */
- if (code == MINUS_EXPR && modify)
+ if (code == MINUS_EXPR
+ && modify
+ && (op1 = gimple_assign_rhs1 (def_stmt))
+ && TREE_CODE (op1) == SSA_NAME
+ && SSA_NAME_DEF_STMT (op1) == phi)
code = PLUS_EXPR;
if (check_reduction