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 | int t_fail() { // expected-note {{to match this}} |
61 | __asm |
62 | __asm { // expected-error 3 {{expected}} expected-note {{to match this}} |
63 | |