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
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);