aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-patterns.c
diff options
context:
space:
mode:
authorIlya Enkovich <ilya.enkovich@intel.com>2016-06-22 14:05:55 +0000
committerIlya Enkovich <ienkovich@gcc.gnu.org>2016-06-22 14:05:55 +0000
commit49e76ff114c94634f01ec0e2406b9ece7d58ce2d (patch)
treec1a0b13225e17bbb58b4370baf22278fd1c0ffec /gcc/tree-vect-patterns.c
parent79c94ff7965fe8b8615b77fbaacdce73c0f37b4a (diff)
downloadgcc-49e76ff114c94634f01ec0e2406b9ece7d58ce2d.zip
gcc-49e76ff114c94634f01ec0e2406b9ece7d58ce2d.tar.gz
gcc-49e76ff114c94634f01ec0e2406b9ece7d58ce2d.tar.bz2
re PR tree-optimization/71488 (Wrong code for vector comparisons with ivybridge and westmere targets)
gcc/ PR middle-end/71488 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): Support comparison of boolean vectors. * tree-vect-stmts.c (vectorizable_comparison): Vectorize comparison of boolean vectors using bitwise operations. gcc/testsuite/ PR middle-end/71488 * g++.dg/pr71488.C: New test. * gcc.dg/vect/vect-bool-cmp.c: New test. From-SVN: r237706
Diffstat (limited to 'gcc/tree-vect-patterns.c')
-rw-r--r--gcc/tree-vect-patterns.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 8a2221f..f0c515d 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -3763,7 +3763,8 @@ vect_recog_mask_conversion_pattern (vec<gimple *> *stmts, tree *type_in,
if (rhs_code != BIT_IOR_EXPR
&& rhs_code != BIT_XOR_EXPR
- && rhs_code != BIT_AND_EXPR)
+ && rhs_code != BIT_AND_EXPR
+ && TREE_CODE_CLASS (rhs_code) != tcc_comparison)
return NULL;
rhs2 = gimple_assign_rhs2 (last_stmt);