[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