https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66630
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #2) > That's one thing. But there also something else going on. I hope it's just > missing TYPE_OVERFLOW_SANITIZED in some match.pd patterns. ``` /* ~A + A -> -1 */ (simplify (plus:c (convert? (bit_not @0)) (convert? @0)) (if (!TYPE_OVERFLOW_TRAPS (type)) (convert { build_all_ones_cst (TREE_TYPE (@0)); }))) /* ~A + 1 -> -A */ (simplify (plus (convert? (bit_not @0)) integer_each_onep) (if (tree_nop_conversion_p (type, TREE_TYPE (@0))) (negate (convert @0)))) /* -A - 1 -> ~A */ (simplify (minus (convert? (negate @0)) integer_each_onep) (if (!TYPE_OVERFLOW_TRAPS (type) && TREE_CODE (type) != COMPLEX_TYPE && tree_nop_conversion_p (type, TREE_TYPE (@0))) (bit_not (convert @0)))) /* -1 - A -> ~A */ (simplify (minus integer_all_onesp @0) (if (TREE_CODE (type) != COMPLEX_TYPE) (bit_not @0))) ``` I am not sure which one of these patterns need the check for TYPE_OVERFLOW_SANITIZED though.