[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