int main() {
    int i;
    int x, y;

    x = 0; y = 0;

// block, labelled exits

  Block: {
	if ( x == y ) {
	    for ( ; i < y; ) {
		y += 1;
		if ( y < 10 ) break Block;
	    }
	}
    }

// loops, labelled exits

  w1: while ( y == 10 );

  w2: while ( x < 10 ) {
      while (y < 5 ) {
	  if ( y == 3 ) break w2;
      }
      x += 1;
  }

  A: for ( i = 0; i < 10; i += 1 ) {
    B: for ( i = 0; i < 10; i += 1 ) {
      C: for ( i = 0; i < 10; i += 1 ) {
	  goto A;
	  goto B;
	  goto C;
	  continue A;
	  continue B;
	  continue C;
	  continue;
	  break A;
	  break B;
	  break C;
	  break;
      }
    }
  }

  D: for ( ;; ) {
      break D;
      continue D;
  }

    Z : i += 1;
    goto Z;
  X: Y: for ( ;; ) {
      i += 1;
      if ( i > 5 ) continue X;
      if ( i < 5 ) break X;
      if ( i < 5 ) break Y;
      break;
  }
  XX: for ( ;; ) {
    YY: for ( ;; ) {
      ZZ: for ( ;; ) {
	  i += 1;
	  if ( i > 5 ) continue XX;
	  if ( i < 5 ) continue YY;
	  if ( i < 5 ) continue ZZ;
	  if ( i > 5 ) break XX;
	  if ( i < 5 ) break YY;
	  if ( i < 5 ) break ZZ;
	  break;
      }
    }
  }

    for ( ;; ) ;
    for ( int i = 0 ;; ) ;
    for (  ; i < 0; ) ;
    for (  ; ; i += 1 ) ;
  L0:  L1:  L2:  L3:  L4:  L5:  L6:  L7:  L8:  L9:
  L10: L11: L12: L13: L14: L15: L16: L17: L18: L19:
  L20: L21: L22: L23: L24: L25: L26: L27: L28: L29:
  L31: L32: L33: L34:
    for ( ;; ) {
	break L0;
    }

// switch/choose, labelled exits

  Switch: switch ( i ) {
    default:
      i += 1;
    case 0:
      i += 1;
      break Switch;
    case 1:
      switch ( i ) {
	case 0:
	  break Switch;
	default:
	  break;
      }
  }

  Choose: choose ( i ) {
    default:
      i += 1;
    case 0:
      i += 1;
      break Choose;
    case 1:
      choose ( i ) {
	case 0:
	  break;
	default:
	  break Choose;
      }
      fallthru;
    case 2:
      i += 1;
  }
#if 0
// computed goto

    {
	static void *array[] = { &&foo, &&bar, &&hack };

      foo: bar: hack:
	goto *array[i];
    }
#endif
#if 0
  Q: if ( i > 5 ) {
      i += 1;
      break Q;
  } else
      i += 1;
#endif
}
