summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2014-02-27 21:56:47 +0000
committerTed Kremenek <kremenek@apple.com>2014-02-27 21:56:47 +0000
commit08da97819a87df1ba5b5596bfaafbdcb7cf041e9 (patch)
treea5a0afb9caa594b1ada843032561a00ae36238fc /clang/test
parent9238c5c878c066fe46bd63ddbf4daf1a5e4f99bc (diff)
downloadbcm5719-llvm-08da97819a87df1ba5b5596bfaafbdcb7cf041e9.tar.gz
bcm5719-llvm-08da97819a87df1ba5b5596bfaafbdcb7cf041e9.zip
[-Wunreachable-code] always treat 'case:' and 'default:' cases as reachable.
This is a heuristic. Many switch statements, although they look covered over an enum, may actually handle at runtime more values than in the enum. This is overly conservative, as there are some cases that clearly can be ruled as being clearly unreachable, e.g. 'switch (42) { case 1: ... }'. We can refine this later. llvm-svn: 202436
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Sema/warn-unreachable.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/test/Sema/warn-unreachable.c b/clang/test/Sema/warn-unreachable.c
index a6bc6a94fc1..630b623b58a 100644
--- a/clang/test/Sema/warn-unreachable.c
+++ b/clang/test/Sema/warn-unreachable.c
@@ -173,6 +173,9 @@ void unreachable_default(MyEnum e) {
case Value1:
calledFun();
break;
+ case 2: // expected-warning {{case value not in enumerated type 'MyEnum'}}
+ calledFun();
+ break;
default:
calledFun(); // no-warning
break;
OpenPOWER on IntegriCloud