97 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// Header for PCH test stmts.c
 | 
						|
 | 
						|
void f0(int x) { 
 | 
						|
  // NullStmt
 | 
						|
  ;
 | 
						|
  // IfStmt
 | 
						|
  if (x) {
 | 
						|
  } else if (x + 1) {
 | 
						|
  }
 | 
						|
 | 
						|
  switch (x) {
 | 
						|
  case 0:
 | 
						|
    x = 17;
 | 
						|
    break;
 | 
						|
 | 
						|
  case 1:
 | 
						|
    break;
 | 
						|
 | 
						|
  default:
 | 
						|
    switch (x >> 1) {
 | 
						|
    case 7:
 | 
						|
      // fall through
 | 
						|
    case 9:
 | 
						|
      break;
 | 
						|
    }
 | 
						|
    x += 2;
 | 
						|
    break;
 | 
						|
  }
 | 
						|
 | 
						|
  while (x > 20) {
 | 
						|
    if (x > 30) {
 | 
						|
      --x;
 | 
						|
      continue;
 | 
						|
    } else if (x < 5)
 | 
						|
      break;
 | 
						|
    else
 | 
						|
      goto done;
 | 
						|
  }
 | 
						|
 | 
						|
  do {
 | 
						|
    x++;
 | 
						|
  } while (x < 10);
 | 
						|
 | 
						|
 almost_done:
 | 
						|
  for (int y = x; y < 20; ++y) {
 | 
						|
    if (x + y == 12)
 | 
						|
      return;
 | 
						|
    else if (x - y == 7)
 | 
						|
      goto almost_done;
 | 
						|
  }
 | 
						|
 | 
						|
 done:
 | 
						|
  x = x + 2;
 | 
						|
 | 
						|
  int z = x, *y, j = 5;
 | 
						|
}
 | 
						|
 | 
						|
int f1(int x) {
 | 
						|
  switch (x) {
 | 
						|
  case 17:
 | 
						|
    return 12;
 | 
						|
 | 
						|
  default:
 | 
						|
    break;
 | 
						|
  }
 | 
						|
 | 
						|
  // variable-length array
 | 
						|
  int array[x * 17 + 3];
 | 
						|
 | 
						|
  return x*2;
 | 
						|
}
 | 
						|
 | 
						|
const char* what_is_my_name(void) { return __func__; }
 | 
						|
 | 
						|
int computed_goto(int x) {
 | 
						|
 start:
 | 
						|
  x = x << 1;
 | 
						|
  void *location = &&start;
 | 
						|
 | 
						|
  if (x > 17)
 | 
						|
    location = &&done;
 | 
						|
 | 
						|
  while (x > 12) {
 | 
						|
    --x;
 | 
						|
    if (x == 15)
 | 
						|
      goto *location;
 | 
						|
  }
 | 
						|
 | 
						|
  done:
 | 
						|
  return 5;
 | 
						|
}
 | 
						|
 | 
						|
#define maxint(a,b) ({int _a = (a), _b = (b); _a > _b ? _a : _b; })
 | 
						|
int weird_max(int x, int y) {
 | 
						|
  return maxint(++x, --y);
 | 
						|
}
 |