1 ; RUN: llc -mtriple=x86_64-pc-linux %s -o - -regalloc=fast -optimize-regalloc=0 | FileCheck %s 2 3 ; We used to consider the early clobber in the second asm statement as 4 ; defining %0 before it was read. This caused us to omit the 5 ; movq -8(%rsp), %rdx 6 7 ; CHECK: #APP 8 ; CHECK-NEXT: #NO_APP 9 ; CHECK-NEXT: movq %rcx, %rax 10 ; CHECK-NEXT: movq %rax, -8(%rsp) 11 ; CHECK-NEXT: movq -8(%rsp), %rdx 12 ; CHECK-NEXT: #APP 13 ; CHECK-NEXT: #NO_APP 14 ; CHECK-NEXT: movq %rdx, %rax 15 ; CHECK-NEXT: movq %rdx, -8(%rsp) 16 ; CHECK-NEXT: ret 17 18 define i64 @foo() { 19 entry: 20 %0 = tail call i64 asm "", "={cx}"() nounwind 21 %1 = tail call i64 asm "", "=&r,0,r,~{rax}"(i64 %0, i64 %0) nounwind 22 ret i64 %1 23 } 24