https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102622
--- Comment #14 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #13)
> VRP is rewriting:
> _75 = _33 ? -1 : 0;
> to:
> _38 = (<signed-boolean:1>) _33;
> _75 = -_38;
>
>
> Folding statement: _75 = _33 ? -1 : 0;
> Applying pattern match.pd:3954, gimple-match.c:142059
> gimple_simplified to _38 = (<signed-boolean:1>) _33;
> _75 = -_38;
> Folded into: _75 = -_38;
>
>
> Mine.
That is this pattern:
/* a ? -1 : 0 -> -a. */
(if (INTEGRAL_TYPE_P (type) && integer_all_onesp (@1))
(negate (convert (convert:boolean_type_node @0))))
I guess I need a check for TYPE_PRECISION being non-1 here.