I don’t know a C compiler that would break the addition based version either that I could tell him about, but maybe it’s worth pointing out that there are languages with overflow checked arithmetics, e.g. Swift. Still not an example where it doesn’t work though because it has separate overflowing operators (&+ and &-).
Rust could be a candidate too, it has a flag for runtime overflow checks. Ada would be the strongest candidate since it requires checks, but most compilers have an option for it anyway, and some older ones even disable them by default.
It’s actually pretty interesting to think about how compilers used to omit checks for performance, while with modern compilers the checked version is often free anyway and can sometimes be faster because it can help with further optimizations down the line.

