summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorDinesh Dwivedi <dinesh.d@samsung.com>2014-06-17 14:34:19 +0000
committerDinesh Dwivedi <dinesh.d@samsung.com>2014-06-17 14:34:19 +0000
commit657105e582ed9d3c95ebe9b721aae1f6def92567 (patch)
tree3e5834311a216d9b9903c9bf455488b15ed6e540 /llvm/test/Transforms
parent2e940a11e7c64718d36955e4ca68fa87aa9d5a9d (diff)
downloadbcm5719-llvm-657105e582ed9d3c95ebe9b721aae1f6def92567.tar.gz
bcm5719-llvm-657105e582ed9d3c95ebe9b721aae1f6def92567.zip
Fixed jump threading going to infinite loop.
This patch add code to remove unreachable blocks from function as they may cause jump threading to stuck in infinite loop. Differential Revision: http://reviews.llvm.org/D3991 llvm-svn: 211103
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/JumpThreading/pr15851_hang.ll22
-rw-r--r--llvm/test/Transforms/JumpThreading/select.ll2
2 files changed, 23 insertions, 1 deletions
diff --git a/llvm/test/Transforms/JumpThreading/pr15851_hang.ll b/llvm/test/Transforms/JumpThreading/pr15851_hang.ll
new file mode 100644
index 00000000000..0484bc9f9dc
--- /dev/null
+++ b/llvm/test/Transforms/JumpThreading/pr15851_hang.ll
@@ -0,0 +1,22 @@
+; RUN: opt -S -jump-threading < %s | FileCheck %s
+
+; CHECK-LABEL: @f(
+; CHECK-LABEL: entry
+; CHECK: ret void
+; CHECK-NOT: for.cond1
+; CHECK-NOT: for.body
+
+define void @f() {
+entry:
+ ret void
+
+for.cond1:
+ %i.025 = phi i32 [ %inc, %for.body ], [ %inc, %for.body ], [ 1, %for.cond1 ]
+ %cmp = icmp slt i32 %i.025, 2
+ br i1 %cmp, label %for.body, label %for.cond1
+
+for.body:
+ %inc = add nsw i32 %i.025, 0
+ %a = icmp ugt i32 %inc, 2
+ br i1 %a, label %for.cond1, label %for.cond1
+}
diff --git a/llvm/test/Transforms/JumpThreading/select.ll b/llvm/test/Transforms/JumpThreading/select.ll
index 201e604e0c5..545e86c082f 100644
--- a/llvm/test/Transforms/JumpThreading/select.ll
+++ b/llvm/test/Transforms/JumpThreading/select.ll
@@ -127,7 +127,7 @@ L4:
; CHECK: test_switch_default
; CHECK: entry:
; CHECK: load
-; CHECK: switch
+; CHECK: icmp
; CHECK: [[THREADED:[A-Za-z.0-9]+]]:
; CHECK: store
; CHECK: br
OpenPOWER on IntegriCloud