Home | History | Annotate | Download | only in PCH
      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:
     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 
     58 int 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 
     73 const char* what_is_my_name(void) { return __func__; }
     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 }
     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 }
     97