https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109722
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is the corrected version which surives a bootstrap: /* Convert ABS[U]_EXPR<x> == 0 or ABS[U]_EXPR<x> != 0 to x == 0 or x != 0. */ (for op (abs absu) (for eqne (eq ne) (simplify (eqne (op @0) zerop@1) (eqne @0 { build_zero_cst (TREE_TYPE (@0)); })))) I forgot the type of ABSU is always unsigned while its operand can be different.