Home | History | Annotate | Download | only in Parser
      1 // REQUIRES: x86-registered-target
      2 // RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks
      3 // Disabling gnu inline assembly should have no effect on this testcase
      4 // RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks -fno-gnu-inline-asm
      5 
      6 #define M __asm int 0x2c
      7 #define M2 int
      8 
      9 void t1(void) { M }
     10 void t2(void) { __asm int 0x2c }
     11 void t3(void) { __asm M2 0x2c }
     12 void t4(void) { __asm mov eax, fs:[0x10] }
     13 void t5() {
     14   __asm {
     15     int 0x2c ; } asm comments are fun! }{
     16   }
     17   __asm {}
     18 }
     19 int t6() {
     20   __asm int 3 ; } comments for single-line asm
     21   __asm {}
     22 
     23   __asm int 4
     24   return 10;
     25 }
     26 void t7() {
     27   __asm {
     28     push ebx
     29     mov ebx, 0x07
     30     pop ebx
     31   }
     32 }
     33 void t8() {
     34   __asm nop __asm nop __asm nop
     35 }
     36 void t9() {
     37   __asm nop __asm nop ; __asm nop
     38 }
     39 void t10() {
     40   __asm {
     41     mov eax, 0
     42     __asm {
     43       mov eax, 1
     44       {
     45         mov eax, 2
     46       }
     47     }
     48   }
     49 }
     50 void t11() {
     51   do { __asm mov eax, 0 __asm { __asm mov edx, 1 } } while(0);
     52 }
     53 void t12() {
     54   __asm jmp label // expected-error {{use of undeclared label 'label'}}
     55 }
     56 int t_fail() { // expected-note {{to match this}}
     57   __asm
     58   __asm { // expected-error 2 {{expected}} expected-note {{to match this}}
     59