diff mbox series

tree-optimization/98015 - fix VEC_COND_EXPR lowering condition

Message ID nycvar.YFH.7.76.2011261616220.25225@elmra.sevgm.obk
State New
Headers show
Series tree-optimization/98015 - fix VEC_COND_EXPR lowering condition | expand

Commit Message

Richard Biener Nov. 26, 2020, 3:16 p.m. UTC
This fixes the condition to match the comment and only lower
VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs.

Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.

2020-11-26  Richard Biener  <rguenther@suse.de>

	* gimple-isel.c (gimple_expand_vec_cond_expr): Only
	lower VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs.
---
 gcc/gimple-isel.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/gcc/gimple-isel.cc b/gcc/gimple-isel.cc
index 83281c0cbf9..048b407bd11 100644
--- a/gcc/gimple-isel.cc
+++ b/gcc/gimple-isel.cc
@@ -139,10 +139,10 @@  gimple_expand_vec_cond_expr (gimple_stmt_iterator *gsi,
      Those can end up generated by folding and at least for integer mode masks
      we cannot expect vcond expanders to exist.  We lower a ? b : c
      to (b & a) | (c & ~a).  */
-  if (!VECTOR_MODE_P (mode))
+  if (VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (lhs))
+      && !VECTOR_MODE_P (mode))
     {
-      gcc_assert (VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (lhs))
-		  && types_compatible_p (TREE_TYPE (op0), TREE_TYPE (op1)));
+      gcc_assert (types_compatible_p (TREE_TYPE (op0), TREE_TYPE (op1)));
       gimple_seq stmts = NULL;
       tree type = TREE_TYPE (lhs);
       location_t loc = gimple_location (stmt);