https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91003

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rsandifo at gcc dot gnu.org

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
So this is another "boolean" case.  In vect_get_constant_vectors we run into

  /* ???  SLP analysis should compute the vector type for the
     constant / invariant and store it in the SLP node.  */
  tree op = op_node->ops[0];
  /* Check if vector type is a boolean vector.  */
  tree stmt_vectype = STMT_VINFO_VECTYPE (stmt_vinfo);
  if (VECT_SCALAR_BOOLEAN_TYPE_P (TREE_TYPE (op))
      && vect_mask_constant_operand_p (stmt_vinfo))
    vector_type = truth_type_for (stmt_vectype);
  else
    vector_type = get_vectype_for_scalar_type (vinfo, TREE_TYPE (op), op_node);

for

h_18 = _129 ? 1 : 0;

with unsigned boolean (kind==4) typed result/then/else values (SImode).

IIRC I couldn't simply remove this and rely on get_vectype_for_scalar_type
to do the right thing (TM) in general.  Plus we don't have a stmt-info
for the constant operands (but we do now have an SLP node for them).

I hope Richards patches improve things here but I don't remember them
touching this particular place.

Reply via email to