Douglas Gregor | 025452f | 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 | 0de9d88 | 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 | 025452f | 2009-04-17 00:04:06 +0000 | [diff] [blame] | 27 | break; |
28 | } | ||||
Douglas Gregor | d921cf9 | 2009-04-17 00:16:09 +0000 | [diff] [blame] | 29 | |
30 | while (x > 20) { | ||||
31 | if (x > 30) { | ||||
32 | --x; | ||||
33 | continue; | ||||
Douglas Gregor | 67d8249 | 2009-04-17 00:29:51 +0000 | [diff] [blame] | 34 | } else if (x < 5) |
35 | break; | ||||
Douglas Gregor | 1de05fe | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 36 | else |
37 | goto done; | ||||
Douglas Gregor | d921cf9 | 2009-04-17 00:16:09 +0000 | [diff] [blame] | 38 | } |
Douglas Gregor | 67d8249 | 2009-04-17 00:29:51 +0000 | [diff] [blame] | 39 | |
40 | do { | ||||
41 | x++; | ||||
42 | } while (x < 10); | ||||
43 | |||||
Douglas Gregor | 1de05fe | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 44 | almost_done: |
Douglas Gregor | 84f2170 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 45 | for (int y = x; y < 20; ++y) { |
46 | if (x + y == 12) | ||||
Douglas Gregor | 0de9d88 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 47 | return; |
Douglas Gregor | 1de05fe | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 48 | else if (x - y == 7) |
49 | goto almost_done; | ||||
Douglas Gregor | 0de9d88 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 50 | } |
Douglas Gregor | 84f2170 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 51 | |
Douglas Gregor | 1de05fe | 2009-04-17 18:18:49 +0000 | [diff] [blame] | 52 | done: |
53 | x = x + 2; | ||||
54 | |||||
Douglas Gregor | 84f2170 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 55 | int z = x, *y, j = 5; |
Douglas Gregor | 0de9d88 | 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 | ba48d05 | 2009-04-22 00:21:21 +0000 | [diff] [blame] | 67 | // variable-length array |
68 | int array[x * 17 + 3]; | ||||
69 | |||||
Douglas Gregor | 0de9d88 | 2009-04-17 16:34:57 +0000 | [diff] [blame] | 70 | return x*2; |
Douglas Gregor | 025452f | 2009-04-17 00:04:06 +0000 | [diff] [blame] | 71 | } |
Douglas Gregor | 84f2170 | 2009-04-17 16:55:36 +0000 | [diff] [blame] | 72 | |
73 | const char* what_is_my_name(void) { return __func__; } | ||||
Douglas Gregor | 7d5c2f2 | 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 | 6a2dd55 | 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 | } |