From this link:
http://clang-developers.42468.n3.nabble.com/Question-on-Wswitch-enum-td4025927.html
compile with (see comments for possible change) -Weverything -Wno-switch-enum
Docs for GCC: http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
-Wswitch Warn whenever a switch statement has an index of enumerated type and lacks a case for one or more of the named codes of that enumeration. (The presence of a default label prevents this warning.) case labels outside the enumeration range also provoke warnings when this option is used (even if there is a default label). This warning is enabled by -Wall.
-Wswitch-enum Warn whenever a switch statement has an index of enumerated type and lacks a case for one or more of the named codes of that enumeration. case labels outside the enumeration range also provoke warnings when this option is used.
The only difference between -Wswitch and this option is that this option gives a warning about an omitted enumeration code even if there is a default label.<<<