| ; RUN: llc -mtriple=x86_64-pc-linux %s -o - -regalloc=fast -optimize-regalloc=0 | FileCheck %s | |
| ; We used to consider the early clobber in the second asm statement as | |
| ; defining %0 before it was read. This caused us to omit the | |
| ; movq -8(%rsp), %rdx | |
| ; CHECK: #APP | |
| ; CHECK-NEXT: #NO_APP | |
| ; CHECK-NEXT: movq %rcx, %rax | |
| ; CHECK-NEXT: movq %rax, -8(%rsp) | |
| ; CHECK-NEXT: movq -8(%rsp), %rdx | |
| ; CHECK-NEXT: #APP | |
| ; CHECK-NEXT: #NO_APP | |
| ; CHECK-NEXT: movq %rdx, %rax | |
| ; CHECK-NEXT: movq %rdx, -8(%rsp) | |
| ; CHECK-NEXT: ret | |
| define i64 @foo() { | |
| entry: | |
| %0 = tail call i64 asm "", "={cx}"() nounwind | |
| %1 = tail call i64 asm "", "=&r,0,r,~{rax}"(i64 %0, i64 %0) nounwind | |
| ret i64 %1 | |
| } |