https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98865
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pinskia at gcc dot gnu.org --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Actually I think we should do: (simplify (mult:c truth_valuep@0 @1) (and (neg @0) @1)) Instead. What do you think? This will catch things like: unsigned long foo (long a, unsigned long b) { unsigned long t = a & 1; return t * b; } ---- CUT --- We can put a ! after neg if we want it to be optimized out even.