https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80592
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2017-05-02 CC| |marxin at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> --- Confirmed, any of releases I have (4.5.0+) can't catch that. Just a nit: -Wstrict-overflow needs -fstrict-overflow and the warning has various levels. Anyhow -Wstrict-overflow=5 and -fstrict-overflow does not work. Btw. -fsanitize=undefined can catch that easily: $ cat pr80592.c #define TU_SIZE_RECOMMENDED (0x3f << 16) void g( int a) { __builtin_printf ("value: %d\n", a); } int main() { int max_tu_symbol = TU_SIZE_RECOMMENDED - 1; g(max_tu_symbol << 23); return 0; } g++ -O2 -fsanitize=undefined pr80592.c && ./a.out pr80592.c:12:21: runtime error: left shift of 4128767 by 23 places cannot be represented in type 'int' value: -8388608