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