[LLVMbugs] [Bug 11986] Unexpected behavior from -Wswitch-enum
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Sat Feb 11 21:06:01 PST 2012
http://llvm.org/bugs/show_bug.cgi?id=11986
David Blaikie <dblaikie at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
--- Comment #1 from David Blaikie <dblaikie at gmail.com> 2012-02-11 23:06:01 CST ---
Eli - thanks for the heads up on this.
John - I think you /might/ be misunderstanding the behavior of -Wswitch-enum.
To quote the GCC documentation (
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.<<<
To demonstrate this behavior (& Clang's consistency with GCC 4.6.1):
$ cat switch.cpp
enum E { a, b };
int func(E e) {
switch (e) {
case a: return 1;
}
return 2;
}
$ clang++ switch.cpp -Wswitch
switch.cpp:3:11: warning: enumeration value 'b' not handled in switch
[-Wswitch]
switch (e) {
^
$ g++ switch.cpp -Wswitch
switch.cpp: In function 'int func(E)':
switch.cpp:3:10: warning: enumeration value 'b' not handled in switch
[-Wswitch]
$ cat switch.cpp
enum E { a, b };
int func(E e) {
switch (e) {
case a: return 1;
default: return 2;
}
}
$ clang++ switch.cpp -Wswitch-enum
switch.cpp:3:11: warning: enumeration value 'b' not explicitly handled in
switch [-Wswitch-enum]
switch (e) {
^
$ g++ switch.cpp -Wswitch-enum
switch.cpp: In function âint func(E)â:
switch.cpp:3:10: warning: enumeration value âbâ not handled in switch
[-Wswitch-enum]
(please reopen if I've misunderstood your bug/haven't adequately explained the
behavior/consistency here)
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list