It doesn't make sense to warn about a switch case not being an enumerator if the enum type has no enumerators; such a type is being used as an opaque typedef rather than a true enumerated type. This usage makes more sense with C++11 enums with explicitly specified underlying type, but I don't think it's necessary to limit the patch to that case. Tested x86_64-pc-linux-gnu, applying to trunk.