warn-unreachable.c revision 44582300b63ac128989643adcd12b6349b67abe4
1// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code -Wno-unused-value
2
3int halt() __attribute__((noreturn));
4int live();
5int dead();
6
7void 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}
25
26void test2() {
27  int i;
28  switch (live()) {
29  case 1:
30    halt(),
31      dead();   // expected-warning {{will never be executed}}
32
33  case 2:
34    live(), halt(),
35      dead();   // expected-warning {{will never be executed}}
36
37  case 3:
38  live()
39    +           // expected-warning {{will never be executed}}
40    halt();
41  dead();
42
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;
76  case 7:
77    halt()
78      +         // expected-warning {{will never be executed}}
79      dead();
80    -           // expected-warning {{will never be executed}}
81      halt();
82  case 8:
83    i
84      +=        // expected-warning {{will never be executed}}
85      halt();
86  case 9:
87    halt()
88      ?         // expected-warning {{will never be executed}}
89      dead() : dead();
90  case 10:
91    (           // expected-warning {{will never be executed}}
92      float)halt();
93  }
94}
95