https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61405
--- Comment #1 from Martin Jambor <jamborm at gcc dot gnu.org> --- The reason why we do not emit is that in c_do_switch_warnings in c-family/c-common.c we check that: /* From here on, we only care about about enumerated types. */ if (!type || TREE_CODE (type) != ENUMERAL_TYPE) return; which fails because (unlike in the non-bit-field case) type is: <integer_type 0x7ffff6d5e150 public unsigned QI size <integer_cst 0x7ffff6c34768 type <integer_type 0x7ffff6c36150 bitsizetype> constant 8> unit size <integer_cst 0x7ffff6c34780 type <integer_type 0x7ffff6c360a8 sizetype> constant 1> align 8 symtab 0 alias set -1 canonical type 0x7ffff6d5e150 precision 2 min <integer_cst 0x7ffff6d4adc8 0> max <integer_cst 0x7ffff6d4ade0 3>>