summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/TailCallElim/inf-recursion.ll
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2015-02-28 16:47:27 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2015-02-28 16:47:27 +0000
commitcb570f1bc9ff7488532dd3fec7ecd2b74cafb489 (patch)
tree29fab039479913ddceb97d95ce9b983d273b8202 /llvm/test/Transforms/TailCallElim/inf-recursion.ll
parent96e68a0c47bfb74d54c4405838c3565f23d6c66f (diff)
downloadbcm5719-llvm-cb570f1bc9ff7488532dd3fec7ecd2b74cafb489.tar.gz
bcm5719-llvm-cb570f1bc9ff7488532dd3fec7ecd2b74cafb489.zip
TRE: Just erase dead BBs and tweak the iteration loop not to increment the deleted BB iterator.
Leaving empty blocks around just opens up a can of bugs like PR22704. Deleting them early also slightly simplifies code. Thanks to Sanjay for the IR test case. llvm-svn: 230856
Diffstat (limited to 'llvm/test/Transforms/TailCallElim/inf-recursion.ll')
-rw-r--r--llvm/test/Transforms/TailCallElim/inf-recursion.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/Transforms/TailCallElim/inf-recursion.ll b/llvm/test/Transforms/TailCallElim/inf-recursion.ll
index 157226f93d3..c121c25aee9 100644
--- a/llvm/test/Transforms/TailCallElim/inf-recursion.ll
+++ b/llvm/test/Transforms/TailCallElim/inf-recursion.ll
@@ -31,3 +31,24 @@ define float @fabsf(float %f) {
}
declare x86_fp80 @fabsl(x86_fp80 %f)
+
+; Don't crash while transforming a function with infinite recursion.
+define i32 @PR22704(i1 %bool) {
+entry:
+ br i1 %bool, label %t, label %f
+
+t:
+ %call1 = call i32 @PR22704(i1 1)
+ br label %return
+
+f:
+ %call = call i32 @PR22704(i1 1)
+ br label %return
+
+return:
+ ret i32 0
+
+; CHECK-LABEL: @PR22704(
+; CHECK: %bool.tr = phi i1 [ %bool, %entry ], [ true, %t ], [ true, %f ]
+; CHECK: br i1 %bool.tr, label %t, label %f
+}
OpenPOWER on IntegriCloud