| Douglas Gregor | a9af1d1 | 2009-04-17 00:04:06 +0000 | [diff] [blame] | 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: | ||||
| Douglas Gregor | f961e59 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 20 | switch (x >> 1) { | 
| 21 | case 7: | ||||
| 22 | // fall through | ||||
| 23 | case 9: | ||||
| 24 | break; | ||||
| 25 | } | ||||
| 26 | x += 2; | ||||
| Douglas Gregor | a9af1d1 | 2009-04-17 00:04:06 +0000 | [diff] [blame] | 27 | break; | 
| 28 | } | ||||
| Douglas Gregor | e24cbc0 | 2009-04-17 00:16:09 +0000 | [diff] [blame] | 29 | |
| 30 | while (x > 20) { | ||||
| 31 | if (x > 30) { | ||||
| 32 | --x; | ||||
| 33 | continue; | ||||
| Douglas Gregor | 71517c4 | 2009-04-17 00:29:51 +0000 | [diff] [blame] | 34 | } else if (x < 5) | 
| 35 | break; | ||||
| Douglas Gregor | 6cc68a4 | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 36 | else | 
| 37 | goto done; | ||||
| Douglas Gregor | e24cbc0 | 2009-04-17 00:16:09 +0000 | [diff] [blame] | 38 | } | 
| Douglas Gregor | 71517c4 | 2009-04-17 00:29:51 +0000 | [diff] [blame] | 39 | |
| 40 | do { | ||||
| 41 | x++; | ||||
| 42 | } while (x < 10); | ||||
| 43 | |||||
| Douglas Gregor | 6cc68a4 | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 44 | almost_done: | 
| Douglas Gregor | 915b6c6 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 45 | for (int y = x; y < 20; ++y) { | 
| 46 | if (x + y == 12) | ||||
| Douglas Gregor | f961e59 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 47 | return; | 
| Douglas Gregor | 6cc68a4 | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 48 | else if (x - y == 7) | 
| 49 | goto almost_done; | ||||
| Douglas Gregor | f961e59 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 50 | } | 
| Douglas Gregor | 915b6c6 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 51 | |
| Douglas Gregor | 6cc68a4 | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 52 | done: | 
| 53 | x = x + 2; | ||||
| 54 | |||||
| Douglas Gregor | 915b6c6 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 55 | int z = x, *y, j = 5; | 
| Douglas Gregor | f961e59 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 56 | } | 
| 57 | |||||
| 58 | int f1(int x) { | ||||
| 59 | switch (x) { | ||||
| 60 | case 17: | ||||
| 61 | return 12; | ||||
| 62 | |||||
| 63 | default: | ||||
| 64 | break; | ||||
| 65 | } | ||||
| 66 | |||||
| Douglas Gregor | 3ddc876 | 2009-04-22 00:21:21 +0000 | [diff] [blame] | 67 | // variable-length array | 
| 68 | int array[x * 17 + 3]; | ||||
| 69 | |||||
| Douglas Gregor | f961e59 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 70 | return x*2; | 
| Douglas Gregor | a9af1d1 | 2009-04-17 00:04:06 +0000 | [diff] [blame] | 71 | } | 
| Douglas Gregor | 915b6c6 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 72 | |
| 73 | const char* what_is_my_name(void) { return __func__; } | ||||
| Douglas Gregor | 779d865 | 2009-04-17 18:58:21 +0000 | [diff] [blame] | 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 | } | ||||
| Douglas Gregor | af97671 | 2009-04-17 19:05:30 +0000 | [diff] [blame] | 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 | } | ||||