tree-optimization/98015 - fix VEC_COND_EXPR lowering condition

This fixes the condition to match the comment and only lower
VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs.

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

	* gimple-isel.cc (gimple_expand_vec_cond_expr): Only
	lower VECTOR_BOOLEAN_TYPE_P VEC_COND_EXPRs.
This commit is contained in:
Richard Biener 2020-11-26 16:11:43 +01:00
parent d24a4c8c42
commit 5c197b83e1

View File

@ -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 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 we cannot expect vcond expanders to exist. We lower a ? b : c
to (b & a) | (c & ~a). */ 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)) gcc_assert (types_compatible_p (TREE_TYPE (op0), TREE_TYPE (op1)));
&& types_compatible_p (TREE_TYPE (op0), TREE_TYPE (op1)));
gimple_seq stmts = NULL; gimple_seq stmts = NULL;
tree type = TREE_TYPE (lhs); tree type = TREE_TYPE (lhs);
location_t loc = gimple_location (stmt); location_t loc = gimple_location (stmt);