https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80592
Bug ID: 80592 Summary: gcc fails to detect overflow in shift statement Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: dcb314 at hotmail dot com Target Milestone: --- For this C/C++ source code, derived from the linux kernel: #define TU_SIZE_RECOMMENDED (0x3f << 16) extern void g( int); void f() { int max_tu_symbol = TU_SIZE_RECOMMENDED - 1; g(max_tu_symbol << 23); } gcc doesn't seem able to detect the overflow into 44 bits. $ ~/gcc/results/bin/gcc -c -O2 -Wall -Wextra -Wstrict-overflow -Wconversion may2b.cc $