From 97ecdb46b1261d34e015df1f6eff20e069ca9bbf Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 3 Mar 2016 15:32:15 +0100 Subject: re PR target/70021 (Test miscompiled with -O3 option for -march=core-avx2.) PR target/70021 * tree-vect-stmts.c (vect_mark_relevant): Remove USED_IN_PATTERN argument, if STMT_VINFO_IN_PATTERN_P (stmt_info), always mark the pattern no matter if it is used just by non-pattern, pattern or mix thereof. (process_use, vect_mark_stmts_to_be_vectorized): Adjust callers. * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern): If oprnd1 def_stmt is in pattern, don't look through it. * gcc.dg/vect/pr70021.c: New test. * gcc.target/i386/pr70021.c: New test. From-SVN: r233940 --- gcc/tree-vect-patterns.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'gcc/tree-vect-patterns.c') diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index 95ce38d..4b3065e 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -2090,7 +2090,8 @@ vect_recog_vector_vector_shift_pattern (vec *stmts, return NULL; tree def = NULL_TREE; - if (gimple_assign_cast_p (def_stmt)) + stmt_vec_info def_vinfo = vinfo_for_stmt (def_stmt); + if (!STMT_VINFO_IN_PATTERN_P (def_vinfo) && gimple_assign_cast_p (def_stmt)) { tree rhs1 = gimple_assign_rhs1 (def_stmt); if (TYPE_MODE (TREE_TYPE (rhs1)) == TYPE_MODE (TREE_TYPE (oprnd0)) -- cgit v1.1