https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81598
--- Comment #5 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Marek Polacek from comment #4) > But you get compile-time warnings for that (-Wswitch), no? For: cat enum.c enum values { A = 1000, B = 30, C = 100 }; int main(int argc, char **argv) { enum values x = (enum values)argc; if (x == 12345) return 1; switch (x) { case A: return 1; case B: return 1; case C: return 2; case 123: return 3; default: return 4; } } I only have warning for 'case 123': gcc -fsanitize=enum enum.c -Wall enum.c: In function ‘main’: enum.c:22:5: warning: case value ‘123’ not in enumerated type ‘enum values’ [-Wswitch] case 123: ^~~~ But one could also produce warning for the if comparison and default bb in the switch statement.