Home | History | Annotate | Download | only in CodeGen
      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