зеркало из https://github.com/microsoft/clang.git
117 строки
2.1 KiB
C
117 строки
2.1 KiB
C
// RUN: %clang %s -fsyntax-only -Xclang -verify -fblocks -Wunreachable-code -Wno-unused-value
|
|
|
|
int halt() __attribute__((noreturn));
|
|
int live();
|
|
int dead();
|
|
|
|
void test1() {
|
|
goto c;
|
|
d:
|
|
goto e; // expected-warning {{will never be executed}}
|
|
c: ;
|
|
int i;
|
|
return;
|
|
goto b; // expected-warning {{will never be executed}}
|
|
goto a; // expected-warning {{will never be executed}}
|
|
b:
|
|
i = 1;
|
|
a:
|
|
i = 2;
|
|
goto f;
|
|
e:
|
|
goto d;
|
|
f: ;
|
|
}
|
|
|
|
void test2() {
|
|
int i;
|
|
switch (live()) {
|
|
case 1:
|
|
halt(),
|
|
dead(); // expected-warning {{will never be executed}}
|
|
|
|
case 2:
|
|
live(), halt(),
|
|
dead(); // expected-warning {{will never be executed}}
|
|
|
|
case 3:
|
|
live()
|
|
+ // expected-warning {{will never be executed}}
|
|
halt();
|
|
dead();
|
|
|
|
case 4:
|
|
a4:
|
|
live(),
|
|
halt();
|
|
goto a4; // expected-warning {{will never be executed}}
|
|
|
|
case 5:
|
|
goto a5;
|
|
c5:
|
|
dead(); // expected-warning {{will never be executed}}
|
|
goto b5;
|
|
a5:
|
|
live(),
|
|
halt();
|
|
b5:
|
|
goto c5;
|
|
|
|
case 6:
|
|
if (live())
|
|
goto e6;
|
|
live(),
|
|
halt();
|
|
d6:
|
|
dead(); // expected-warning {{will never be executed}}
|
|
goto b6;
|
|
c6:
|
|
dead();
|
|
goto b6;
|
|
e6:
|
|
live(),
|
|
halt();
|
|
b6:
|
|
goto c6;
|
|
case 7:
|
|
halt()
|
|
+
|
|
dead(); // expected-warning {{will never be executed}}
|
|
- // expected-warning {{will never be executed}}
|
|
halt();
|
|
case 8:
|
|
i
|
|
+= // expected-warning {{will never be executed}}
|
|
halt();
|
|
case 9:
|
|
halt()
|
|
? // expected-warning {{will never be executed}}
|
|
dead() : dead();
|
|
case 10:
|
|
( // expected-warning {{will never be executed}}
|
|
float)halt();
|
|
case 11: {
|
|
int a[5];
|
|
live(),
|
|
a[halt()
|
|
]; // expected-warning {{will never be executed}}
|
|
}
|
|
}
|
|
}
|
|
|
|
enum Cases { C1, C2, C3 };
|
|
int test_enum_cases(enum Cases C) {
|
|
switch (C) {
|
|
case C1:
|
|
case C2:
|
|
case C3:
|
|
return 1;
|
|
default: {
|
|
int i = 0; // expected-warning{{will never be executed}}
|
|
++i;
|
|
return i;
|
|
}
|
|
}
|
|
}
|
|
|