https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81148
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- It's the (flag_sanitize & SANITIZE_SI_OVERFLOW) == 0 check in fold_negate_expr_1 that makes the difference w/ and w/o ubsan.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81148
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- It's the (flag_sanitize & SANITIZE_SI_OVERFLOW) == 0 check in fold_negate_expr_1 that makes the difference w/ and w/o ubsan.