summaryrefslogtreecommitdiff
path: root/test/Transforms/TailCallElim
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-04-16 15:57:50 +0000
committerDan Gohman <gohman@apple.com>2010-04-16 15:57:50 +0000
commitea25b48af33be42e19236d8eac26bd42b45bcc1b (patch)
treef2b3d525b4e4b28749da88f1ae0a0ea181162c11 /test/Transforms/TailCallElim
parent4ec2258ffb495d7ce00177e447740ef1123a27db (diff)
downloadllvm-ea25b48af33be42e19236d8eac26bd42b45bcc1b.tar.gz
llvm-ea25b48af33be42e19236d8eac26bd42b45bcc1b.tar.bz2
llvm-ea25b48af33be42e19236d8eac26bd42b45bcc1b.tar.xz
Refine the detection of seemingly infinitely recursive calls where the
callee is expected to be expanded to something else by codegen, so that normal infinitely recursive calls are still transformed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101468 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/TailCallElim')
-rw-r--r--test/Transforms/TailCallElim/inf-recursion.ll26
1 files changed, 25 insertions, 1 deletions
diff --git a/test/Transforms/TailCallElim/inf-recursion.ll b/test/Transforms/TailCallElim/inf-recursion.ll
index a5f246d36c..e4ac9283ae 100644
--- a/test/Transforms/TailCallElim/inf-recursion.ll
+++ b/test/Transforms/TailCallElim/inf-recursion.ll
@@ -1,6 +1,10 @@
-; RUN: opt < %s -tailcallelim -S | grep call
+; RUN: opt < %s -tailcallelim -S | FileCheck %s
+
; Don't turn this into an infinite loop, this is probably the implementation
; of fabs and we expect the codegen to lower fabs.
+; CHECK: @fabs(double %f)
+; CHECK: call
+; CHECK: ret
define double @fabs(double %f) {
entry:
@@ -8,3 +12,23 @@ entry:
ret double %tmp2
}
+; Do turn other calls into infinite loops though.
+
+; CHECK: define double @foo
+; CHECK-NOT: call
+; CHECK: }
+define double @foo(double %f) {
+ %t= call double @foo(double %f)
+ ret double %t
+}
+
+; CHECK: define float @fabsf
+; CHECK-NOT: call
+; CHECK: }
+define float @fabsf(float %f) {
+ %t= call float @fabsf(float 2.0)
+ ret float %t
+}
+
+declare float @fabsf(float %f)
+declare x86_fp80 @fabsl(x86_fp80 %f)