| ; 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 |
| } |