blob: 1eef6371336064bc496f1285c3ccb0f733f94a60 [file] [log] [blame]
Mike Stumpea409442010-01-15 23:33:51 +00001// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code -Wno-unused-value
Mike Stumpdec5a392010-01-15 03:15:36 +00002
Mike Stumpd4d6fb32010-01-15 23:17:13 +00003int halt() __attribute__((noreturn));
4int live();
5int dead();
6
Mike Stumpdec5a392010-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 Stumpd4d6fb32010-01-15 23:17:13 +000025
26void test2() {
Mike Stump14781502010-01-21 17:31:41 +000027 int i;
Mike Stumpd4d6fb32010-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 Stumpcc3a8532010-01-21 17:21:23 +000034 live(), halt(),
Mike Stumpd4d6fb32010-01-15 23:17:13 +000035 dead(); // expected-warning {{will never be executed}}
36
37 case 3:
Mike Stumpea409442010-01-15 23:33:51 +000038 live()
Mike Stumpcc3a8532010-01-21 17:21:23 +000039 + // expected-warning {{will never be executed}}
40 halt();
41 dead();
Mike Stumpd4d6fb32010-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 Stumpcc3a8532010-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 Stump14781502010-01-21 17:31:41 +000082 case 8:
83 i
84 += // expected-warning {{will never be executed}}
85 halt();
Mike Stumpc18c4032010-01-21 19:44:04 +000086 case 9:
87 halt()
88 ? // expected-warning {{will never be executed}}
89 dead() : dead();
Mike Stumpd12e4952010-01-21 19:51:34 +000090 case 10:
91 ( // expected-warning {{will never be executed}}
92 float)halt();
Mike Stump60dbeeb2010-01-21 23:15:53 +000093 case 11: {
94 int a[5];
95 live(),
96 a[halt()
97 ]; // expected-warning {{will never be executed}}
98 }
Mike Stumpd4d6fb32010-01-15 23:17:13 +000099 }
100}