diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-11-30 23:55:39 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-11-30 23:55:39 +0000 |
commit | 3d2125c9dbac695c93f42c0f59fd040e413fd711 (patch) | |
tree | 1f7e426fb325a457b03fafbc84f4f6446af3c270 /test/CodeGen/X86 | |
parent | 3f8c110dc643847363686d543a56c23c41353ab0 (diff) | |
download | external_llvm-3d2125c9dbac695c93f42c0f59fd040e413fd711.zip external_llvm-3d2125c9dbac695c93f42c0f59fd040e413fd711.tar.gz external_llvm-3d2125c9dbac695c93f42c0f59fd040e413fd711.tar.bz2 |
Enable sibling call optimization of libcalls which are expanded during
legalization time. Since at legalization time there is no mapping from
SDNode back to the corresponding LLVM instruction and the return
SDNode is target specific, this requires a target hook to check for
eligibility. Only x86 and ARM support this form of sibcall optimization
right now.
rdar://8707777
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120501 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86')
-rw-r--r-- | test/CodeGen/X86/sibcall-5.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/CodeGen/X86/sibcall-5.ll b/test/CodeGen/X86/sibcall-5.ll new file mode 100644 index 0000000..4a2e7fb --- /dev/null +++ b/test/CodeGen/X86/sibcall-5.ll @@ -0,0 +1,24 @@ +; RUN: llc < %s -march=x86-64 | FileCheck %s + +; Sibcall optimization of expanded libcalls. +; rdar://8707777 + +define double @foo(double %a) nounwind readonly ssp { +entry: +; CHECK: foo: +; CHECK: jmp {{_?}}sin + %0 = tail call double @sin(double %a) nounwind readonly + ret double %0 +} + +define float @bar(float %a) nounwind readonly ssp { +; CHECK: bar: +; CHECK: jmp {{_?}}sinf +entry: + %0 = tail call float @sinf(float %a) nounwind readonly + ret float %0 +} + +declare float @sinf(float) nounwind readonly + +declare double @sin(double) nounwind readonly |