diff options
author | Dale Johannesen <dalej@apple.com> | 2009-09-20 00:36:41 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2009-09-20 00:36:41 +0000 |
commit | a894053a9b51524408dfcde830d129b719f02cbf (patch) | |
tree | 836396e883b3a9b3f7b09fe0da029ace8ce66973 /llvm/test/CodeGen/X86/2009-09-19-earlyclobber.ll | |
parent | ca2552d9f94a97acd7d37a7366a90efc4c6f7b90 (diff) | |
download | bcm5719-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/CodeGen/X86/2009-09-19-earlyclobber.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/2009-09-19-earlyclobber.ll | 15 |
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 +} |