blob: e1fa0326b76213c4faa42660b40585f36b1a854a [file] [log] [blame]
Rafael Espindolafdb00a92011-11-22 06:36:25 +00001; RUN: llc -mtriple=x86_64-pc-linux %s -o - -regalloc=fast | FileCheck %s
Rafael Espindola254a1322011-11-22 06:27:18 +00002
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
18define i64 @foo() {
19entry:
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}