[cfe-dev] False positive for -Wunreachable-code
Abramo Bagnara
abramo.bagnara at bugseng.com
Sun Oct 28 00:12:33 PDT 2012
$ cat p.c
#include <stdio.h>
enum e { a, b = 4 } x = 3;
void g(int v) {
printf("%d\n", v);
}
int main(int argc, char **argv) {
switch (x) {
case a:
g(0);
break;
case b:
g(1);
break;
default:
g(2);
break;
}
}
$ _clang -Wunreachable-code -Wcovered-switch-default -O2 p.c
p.c:17:3: warning: default label in switch which covers all enumeration
values
[-Wcovered-switch-default]
default:
^
p.c:18:7: warning: will never be executed [-Wunreachable-code]
g(2);
^
$ ./a.out
2
Of course -Wcovered-switch-default warning is a perfectly true positive.
My reading of the standard is that nothing prevent an enum to have a
value different from listed enum constants if this value is compatible
with enum range (and code generation seems to agree on that).
Are there any objection to file a bug report?
--
Abramo Bagnara
BUGSENG srl - http://bugseng.com
mailto:abramo.bagnara at bugseng.com
More information about the cfe-dev
mailing list