text: // REQUIRES: x86-registered-target
  // RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks
  // Disabling gnu inline assembly should have no effect on this testcase
  // RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks -fno-gnu-inline-asm
  
  #define M __asm int 0x2c
  #define M2 int
  
  void t1(void) { M }
  void t2(void) { __asm int 2ch }
  void t3(void) { __asm M2 2ch }
  void t4(void) { __asm mov eax, fs:[10h] }
  void t5(void) {
    __asm {
      int 0x2c ; } asm comments are fun! }{
    }
    __asm {}
  }
  int t6(void) {
    __asm int 3 ; } comments for single-line asm
    __asm {}
  
    __asm int 4
    return 10;
  }
  void t7(void) {
    __asm {
      push ebx
      mov ebx, 07h
      pop ebx
    }
  }
  void t8(void) {
    __asm nop __asm nop __asm nop
  }
  void t9(void) {
    __asm nop __asm nop ; __asm nop
  }
  void t10(void) {
    __asm {
      mov eax, 0
      __asm {
        mov eax, 1
        {
          mov eax, 2
        }
      }
    }
  }
  void t11(void) {
    do { __asm mov eax, 0 __asm { __asm mov edx, 1 } } while(0);
  }
  void t12(void) {
    __asm jmp label // expected-error {{use of undeclared label 'label'}}
  }
  void t13(void) {
    __asm m{o}v eax, ebx // expected-error {{unknown token in expression}}
  }
  
  void t14(void) {
    enum { A = 1, B };
    __asm mov eax, offset A // expected-error {{offset operator cannot yet handle constants}}
  }
  
  int t_fail(void) { // expected-note {{to match this}}
    __asm 
    __asm { // expected-error 3 {{expected}} expected-note {{to match this}}
  