blob: e7e1d0b3ebca39c3b044d4c54832ed6c1b0ee581 [file] [log] [blame]
Tom Carec4b5bd82010-07-23 23:04:53 +00001// RUN: %clang_cc1 -analyze -analyzer-experimental-checks -analyzer-check-objc-mem -analyzer-check-dead-stores -verify -analyzer-opt-analyze-nested-blocks %s
2
3extern void foo(int a);
4
5void test(unsigned a) {
6 switch (a) {
7 a += 5; // expected-warning{{never executed}}
8 case 2:
9 a *= 10;
10 case 3:
11 a %= 2;
12 }
13 foo(a);
14}
15
16void test2(unsigned a) {
17 help:
18 if (a > 0)
19 return;
20 if (a == 0)
21 return;
22 foo(a); // expected-warning{{never executed}}
23 goto help;
24}
25
26void test3() {
27 int a = 5;
28
29 while (a > 1)
30 a -= 2;
31
32 if (a > 1) {
33 a = a + 56; // expected-warning{{never executed}}
34 }
35
36 foo(a);
37}
38
39void test4(unsigned a) {
40 while(1);
41 if (a > 5) { // expected-warning{{never executed}}
42 return;
43 }
44}
45
46extern void bar(char c);
47
48void test5(const char *c) {
49 foo(c[0]);
50
51 if (!c) {
52 bar(1); // expected-warning{{never executed}}
53 }
54}
55
Jordy Rose5e04bdd2010-07-27 03:39:53 +000056void test6(const char *c) {
57 if (c) return;
58 if (!c) return;
59 __builtin_unreachable(); // no-warning
60}
61