80 lines · c
1// REQUIRES: x86-registered-target2// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks3// Disabling gnu inline assembly should have no effect on this testcase4// RUN: %clang_cc1 %s -triple i386-apple-darwin10 -verify -fasm-blocks -fno-gnu-inline-asm5 6#define M __asm int 0x2c7#define M2 int8 9void t1(void) { M }10void t2(void) { __asm int 2ch }11void t3(void) { __asm M2 2ch }12void t4(void) { __asm mov eax, fs:[10h] }13void t5(void) {14 __asm {15 int 0x2c ; } asm comments are fun! }{16 }17 __asm {}18}19int t6(void) {20 __asm int 3 ; } comments for single-line asm21 __asm {}22 23 __asm int 424 return 10;25}26void t7(void) {27 __asm {28 push ebx29 mov ebx, 07h30 pop ebx31 }32}33void t8(void) {34 __asm nop __asm nop __asm nop35}36void t9(void) {37 __asm nop __asm nop ; __asm nop38}39void t10(void) {40 __asm {41 mov eax, 042 __asm {43 mov eax, 144 {45 mov eax, 246 }47 }48 }49}50void t11(void) {51 do { __asm mov eax, 0 __asm { __asm mov edx, 1 } } while(0);52}53void t12(void) {54 __asm jmp label // expected-error {{use of undeclared label 'label'}}55}56void t13(void) {57 __asm m{o}v eax, ebx // expected-error {{unknown token in expression}}58}59 60void t14(void) {61 enum { A = 1, B };62 __asm mov eax, offset A // expected-error {{offset operator cannot yet handle constants}}63}64 65// GH5779166typedef struct S {67 unsigned bf1:1; // expected-note {{bit-field is declared here}}68 unsigned bf2:1; // expected-note {{bit-field is declared here}}69} S;70void t15(S s) {71 __asm {72 mov eax, s.bf1 // expected-error {{an inline asm block cannot have an operand which is a bit-field}}73 mov s.bf2, eax // expected-error {{an inline asm block cannot have an operand which is a bit-field}}74 }75}76 77int t_fail(void) { // expected-note {{to match this}}78 __asm 79 __asm { // expected-error 3 {{expected}} expected-note {{to match this}}80