150
|
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 2ch }
|
|
11 void t3(void) { __asm M2 2ch }
|
|
12 void t4(void) { __asm mov eax, fs:[10h] }
|
|
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, 07h
|
|
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 void t13() {
|
|
57 __asm m{o}v eax, ebx // expected-error {{unknown token in expression}}
|
|
58 }
|
|
59
|
|
60 void t14() {
|
|
61 enum { A = 1, B };
|
|
62 __asm mov eax, offset A // expected-error {{offset operator cannot yet handle constants}}
|
|
63 }
|
|
64
|
|
65 int t_fail() { // expected-note {{to match this}}
|
|
66 __asm
|
|
67 __asm { // expected-error 3 {{expected}} expected-note {{to match this}}
|