summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2009-09-20 00:36:41 +0000
committerDale Johannesen <dalej@apple.com>2009-09-20 00:36:41 +0000
commita894053a9b51524408dfcde830d129b719f02cbf (patch)
tree836396e883b3a9b3f7b09fe0da029ace8ce66973 /llvm/test
parentca2552d9f94a97acd7d37a7366a90efc4c6f7b90 (diff)
downloadbcm5719-llvm-a894053a9b51524408dfcde830d129b719f02cbf.tar.gz
bcm5719-llvm-a894053a9b51524408dfcde830d129b719f02cbf.zip
When computing live intervals for earlyclobber operands,
we pushed the beginning of the interval back 1, so the interval would overlap with inputs that die. We were also pushing the end of the interval back 1, though, which means the earlyclobber didn't overlap with other output operands. Don't do this. PR 4964. llvm-svn: 82342
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/CodeGen/X86/2009-09-19-earlyclobber.ll15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/2009-09-19-earlyclobber.ll b/llvm/test/CodeGen/X86/2009-09-19-earlyclobber.ll
new file mode 100644
index 00000000000..4f44caea74c
--- /dev/null
+++ b/llvm/test/CodeGen/X86/2009-09-19-earlyclobber.ll
@@ -0,0 +1,15 @@
+; RUN: llc < %s | FileCheck %s
+; ModuleID = '4964.c'
+; PR 4964
+; Registers other than RAX, RCX are OK, but they must be different.
+target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
+target triple = "x86_64-apple-darwin10.0"
+ type { i64, i64 } ; type %0
+
+define i64 @flsst(i64 %find) nounwind ssp {
+entry:
+; CHECK: FOO %rax %rcx
+ %asmtmp = tail call %0 asm sideeffect "FOO $0 $1 $2", "=r,=&r,rm,~{dirflag},~{fpsr},~{flags},~{cc}"(i64 %find) nounwind ; <%0> [#uses=1]
+ %asmresult = extractvalue %0 %asmtmp, 0 ; <i64> [#uses=1]
+ ret i64 %asmresult
+}
OpenPOWER on IntegriCloud