]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Parser/ms-inline-asm.c
Vendor import of clang trunk r238337:
[FreeBSD/FreeBSD.git] / test / Parser / ms-inline-asm.c
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}}