The compiler may optimize away the values passed into ubsan's integer
overflow handlers. This can lead to confusing reports. E.g, the runtime
reports overflows in nonsensical expressions such as "0 + 0":
struct Undef { int I; } int getUndefInt() { Undef U; return U.I; } int main() { return getUndefInt() + getUndefInt(); }
Improve the situation by checking for an actual overflow in the handler.
If we can't detect an overflow, explain what happened to the user.
Depends on D25294.
No need for \brief