blob: 7c913cafb245753fbd88d52f574cdee5176068dc [file] [log] [blame]
Mike Stump823000c2010-01-15 23:33:51 +00001// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code -Wno-unused-value
Mike Stump9a24dc12010-01-15 03:15:36 +00002
Mike Stump8eae0902010-01-15 23:17:13 +00003int halt() __attribute__((noreturn));
4int live();
5int dead();
6
Mike Stump9a24dc12010-01-15 03:15:36 +00007void test1() {
8 goto c;
9 d:
10 goto e; // expected-warning {{will never be executed}}
11 c: ;
12 int i;
13 return;
14 goto b; // expected-warning {{will never be executed}}
15 goto a; // expected-warning {{will never be executed}}
16 b:
17 i = 1;
18 a:
19 i = 2;
20 goto f;
21 e:
22 goto d;
23 f: ;
24}
Mike Stump8eae0902010-01-15 23:17:13 +000025
26void test2() {
Mike Stump45db90d2010-01-21 17:31:41 +000027 int i;
Mike Stump8eae0902010-01-15 23:17:13 +000028 switch (live()) {
29 case 1:
30 halt(),
31 dead(); // expected-warning {{will never be executed}}
32
33 case 2:
Mike Stump55f988e2010-01-21 17:21:23 +000034 live(), halt(),
Mike Stump8eae0902010-01-15 23:17:13 +000035 dead(); // expected-warning {{will never be executed}}
36
37 case 3:
Mike Stump823000c2010-01-15 23:33:51 +000038 live()
Mike Stump55f988e2010-01-21 17:21:23 +000039 + // expected-warning {{will never be executed}}
40 halt();
41 dead();
Mike Stump8eae0902010-01-15 23:17:13 +000042
43 case 4:
44 a4:
45 live(),
46 halt();
47 goto a4; // expected-warning {{will never be executed}}
48
49 case 5:
50 goto a5;
51 c5:
52 dead(); // expected-warning {{will never be executed}}
53 goto b5;
54 a5:
55 live(),
56 halt();
57 b5:
58 goto c5;
59
60 case 6:
61 if (live())
62 goto e6;
63 live(),
64 halt();
65 d6:
66 dead(); // expected-warning {{will never be executed}}
67 goto b6;
68 c6:
69 dead();
70 goto b6;
71 e6:
72 live(),
73 halt();
74 b6:
75 goto c6;
Mike Stump55f988e2010-01-21 17:21:23 +000076 case 7:
77 halt()
78 + // expected-warning {{will never be executed}}
79 dead();
80 - // expected-warning {{will never be executed}}
81 halt();
Mike Stump45db90d2010-01-21 17:31:41 +000082 case 8:
83 i
84 += // expected-warning {{will never be executed}}
85 halt();
Mike Stumpe5fba702010-01-21 19:44:04 +000086 case 9:
87 halt()
88 ? // expected-warning {{will never be executed}}
89 dead() : dead();
Mike Stump8eae0902010-01-15 23:17:13 +000090 }
91}