1// Header for PCH test stmts.c
2
3void 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
58int 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
73const char* what_is_my_name(void) { return __func__; }
74
75int 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; })
94int weird_max(int x, int y) {
95  return maxint(++x, --y);
96}
97