https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110155
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Created attachment 55279 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55279&action=edit Simple patch which I am testing Note I noticed the patterns I am modifying causes a lot of "garbage" statements to come out of it. They explictly produce `(-((typeof(y))t) & z)` where t is zero_one_valued_p but that is already going to be transformed into `((typeof(y))t) * z` by another pattern (around line 2058 in match.pd). I will improve that up too.