[Bug middle-end/108237] [13 Regression] ICE: in gimple_expand_vec_cond_expr, at gimple-isel.cc:281 at -O since r13-1085-g90467f0ad649d081
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jan 3 15:57:29 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108237
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Bet another case of post-veclower folding that turns out something we can
handle into something we can't.
In this case fre5 after veclower21 triggers:
/* Simplify comparison of something with itself. For IEEE
floating-point, we can only do some of these simplifications. */
(for cmp (eq ge le)
(simplify
(cmp @0 @0)
(if (! FLOAT_TYPE_P (TREE_TYPE (@0))
|| ! tree_expr_maybe_nan_p (@0))
{ constant_boolean_node (true, type); }
and
/* (X & Y) == X becomes (X & ~Y) == 0. */
(simplify
(cmp:c (bit_and:c @0 @1) @0)
(cmp (bit_and @0 (bit_not! @1)) { build_zero_cst (TREE_TYPE (@0)); }))
match.pd simplifications:
u.0_3 = u;
_12 = VIEW_CONVERT_EXPR<unsigned char>(u.0_3);
_2 = {_12};
- _15 = VIEW_CONVERT_EXPR<unsigned char>(u.0_3);
- _16 = _12 == _15;
- _17 = (_Bool) _16;
- _18 = _16 & 1;
- _19 = (signed char) _18;
- _20 = -_19;
- _5 = {_20};
- _13 = VIEW_CONVERT_EXPR<unsigned char>(_5);
- _6 = (long long unsigned int) _13;
- _1 = {_6, _6};
v.2_7 = v;
- _8 = _1 & v.2_7;
+ _8 = v.2_7 & { 255, 255 };
_9 = v.2_7 != _8;
_10 = VEC_COND_EXPR <_9, { -1, -1 }, { 0, 0 }>;
w_14 = VIEW_CONVERT_EXPR<V>(_10);
More information about the Gcc-bugs
mailing list