1 // Header for PCH test stmts.c 2 3 void f0(int x) { 4 // NullStmt 5 ; 6 // IfStmt 7 if (x) { 8 } else if (x + 1) { 9 } 10 11 switch (x) { 12 case 0: 13 x = 17; 14 break; 15 16 case 1: 17 break; 18 19 default: 20 switch (x >> 1) { 21 case 7: 22 // fall through 23 case 9: 24 break; 25 } 26 x += 2; 27 break; 28 } 29 30 while (x > 20) { 31 if (x > 30) { 32 --x; 33 continue; 34 } else if (x < 5) 35 break; 36 else 37 goto done; 38 } 39 40 do { 41 x++; 42 } while (x < 10); 43 44 almost_done: 45 for (int y = x; y < 20; ++y) { 46 if (x + y == 12) 47 return; 48 else if (x - y == 7) 49 goto almost_done; 50 } 51 52 done: 53 x = x + 2; 54 55 int z = x, *y, j = 5; 56 } 57 58 int f1(int x) { 59 switch (x) { 60 case 17: 61 return 12; 62 63 default: 64 break; 65 } 66 67 // variable-length array 68 int array[x * 17 + 3]; 69 70 return x*2; 71 } 72 73 const char* what_is_my_name(void) { return __func__; } 74 75 int computed_goto(int x) { 76 start: 77 x = x << 1; 78 void *location = &&start; 79 80 if (x > 17) 81 location = &&done; 82 83 while (x > 12) { 84 --x; 85 if (x == 15) 86 goto *location; 87 } 88 89 done: 90 return 5; 91 } 92 93 #define maxint(a,b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; }) 94 int weird_max(int x, int y) { 95 return maxint(++x, --y); 96 } 97