https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121774
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- With ` -fsanitize=undefined ` I get Program returned: 0 /app/example.cpp:30:23: runtime error: signed integer overflow: -2147483648 + -1 cannot be represented in type 'int' /app/example.cpp:30:33: runtime error: signed integer overflow: 1 + 2147483647 cannot be represented in type 'int' So the program has some undefined behavior in it. Change: sum.lead_ = x.lead_ + y.lead_ + carry; to: sum.lead_ = (unsigned)x.lead_ + (unsigned)y.lead_ + (unsigned)carry; Fixes the errors from the sanitizer finds and fixes the testcase.