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