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