https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111957
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- We already have patterns for -a and ~a even: /* X != C1 ? -X : C2 simplifies to -X when -C1 == C2. */ /* X != C1 ? ~X : C2 simplifies to ~X when ~C1 == C2. */ I will add one to handle abs too.