https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79479
--- Comment #7 from Paul Eggert <eggert at gnu dot org> --- > the translation of a program that contains an overflowing constant expression > has undefined behavior Sure, but the programs in question do not contain constant expressions in sense of the C standard. They contain expressions that consist entirely of constants, which is a different thing. For example, assuming 32-bit int the following program contains the constant expression 'INT_MAX + 1' and the C standard requires a diagnostic for the overflow: #include <limits.h> int F (void) { if (0) { static int too_big = INT_MAX + 1; return too_big != 0; } return 0; } In contrast, the following program is valid C code and its behavior is well-defined because 'INT_MAX + 1' is not a constant expression (in the C-standard sense) and it is never evaluated: #include <limits.h> int G (void) { if (0) { int too_big = INT_MAX + 1; return too_big != 0; } return 0; } This bug report is about the latter kind of program. In practice these are often useful programs and GCC's overflow diagnostics are false alarms.