https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193
Bug ID: 68193 Summary: _Generic -Woverflow false alarm Product: gcc Version: 5.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: eggert at gnu dot org Target Milestone: --- I ran into this problem when developing Gnulib code. This is with GCC 5.2.0 on x86-64. Compile the following program t.c with 'gcc -Wall t.c': int main (void) { int i = 0; int j = _Generic (i, int: 0, long int: (i = (long int) 9223372036854775808UL)); return i + j; } GCC generates the bogus warning: t.c: In function 'main': t.c:7:22: warning: overflow in implicit constant conversion [-Woverflow] long int: (i = (long int) 9223372036854775808UL)); ^ The warning is bogus because the corresponding expression is not evaluated, as per the semantics of _Generic. Add 1 to that big constant, changing it to 9223372036854775809UL, and the bogus warning goes away. So it's possible that there are two bugs here, one having to do with bogus warnings in unevaluated _Generic subexpressions, the other having to do with (unsigned long) LONG_MIN.