https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82285
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot
gnu.org
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
So the issue is
-t2.c:13:3: note: vect_is_simple_use: operand _1
-t2.c:13:3: note: def_stmt: _1 = i_14 <= 4;
-t2.c:13:3: note: type of def: internal
-t2.c:13:3: note: vect_is_simple_use: operand _1
-t2.c:13:3: note: def_stmt: _1 = i_14 <= 4;
-t2.c:13:3: note: type of def: internal
-t2.c:13:3: note: vect_recog_bool_pattern: detected:
-t2.c:13:3: note: bool pattern recognized: patt_12 = _1 ? 1 : 0;
which isn't detected if I make 'data' the enum type vs. unsigned int.
Fix:
Index: gcc/tree-vect-patterns.c
===================================================================
--- gcc/tree-vect-patterns.c (revision 253134)
+++ gcc/tree-vect-patterns.c (working copy)
@@ -3643,7 +3643,7 @@ vect_recog_bool_pattern (vec<gimple *> *
rhs_code = gimple_assign_rhs_code (last_stmt);
if (CONVERT_EXPR_CODE_P (rhs_code))
{
- if (TREE_CODE (TREE_TYPE (lhs)) != INTEGER_TYPE
+ if (! INTEGRAL_TYPE_P (TREE_TYPE (lhs))
|| TYPE_PRECISION (TREE_TYPE (lhs)) == 1)
return NULL;
vectype = get_vectype_for_scalar_type (TREE_TYPE (lhs));