1 // RUN: %clang_cc1 -triple i386-unknown-unknown -fasm-blocks -fsyntax-only -verify %s -DCHECK_ASM_GOTO 2 // RUN: %clang_cc1 -triple i386-unknown-unknown -fasm-blocks -O0 -emit-llvm -S %s -o - | FileCheck %s 3 // REQUIRES: x86-registered-target 4 5 void f() { 6 __asm mov eax, ebx 7 __asm mov ebx, ecx 8 __asm__("movl %ecx, %edx"); 9 // CHECK: movl %ebx, %eax 10 // CHECK: movl %ecx, %ebx 11 // CHECK: movl %ecx, %edx 12 13 __asm mov eax, ebx 14 __asm volatile ("movl %ecx, %edx"); 15 // CHECK: movl %ebx, %eax 16 // CHECK: movl %ecx, %edx 17 18 __asm mov eax, ebx 19 __asm const ("movl %ecx, %edx"); // expected-warning {{ignored const qualifier on asm}} 20 // CHECK: movl %ebx, %eax 21 // CHECK: movl %ecx, %edx 22 23 #ifdef CHECK_ASM_GOTO 24 __asm volatile goto ("movl %ecx, %edx"); // expected-error {{'asm goto' constructs are not supported yet}} 25 26 __asm mov eax, ebx 27 __asm goto ("movl %ecx, %edx"); // expected-error {{'asm goto' constructs are not supported yet}} 28 #endif 29 } 30