[PATCH] [Jump-Threading] Fixed jump threading hang issues (PR15386, PR15851)
Dinesh Dwivedi
dinesh.d at samsung.com
Tue Jun 17 07:42:25 PDT 2014
Closed by commit rL211103 (authored by dinesh).
http://reviews.llvm.org/D3991
Files:
llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
llvm/trunk/test/Transforms/JumpThreading/pr15851_hang.ll
llvm/trunk/test/Transforms/JumpThreading/select.ll
Index: llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
+++ llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
@@ -158,6 +158,9 @@
TLI = &getAnalysis<TargetLibraryInfo>();
LVI = &getAnalysis<LazyValueInfo>();
+ // Remove unreachable blocks from function as they may result in infinite loop.
+ removeUnreachableBlocks(F);
+
FindLoopHeaders(F);
bool Changed, EverChanged = false;
Index: llvm/trunk/test/Transforms/JumpThreading/select.ll
===================================================================
--- llvm/trunk/test/Transforms/JumpThreading/select.ll
+++ llvm/trunk/test/Transforms/JumpThreading/select.ll
@@ -127,7 +127,7 @@
; CHECK: test_switch_default
; CHECK: entry:
; CHECK: load
-; CHECK: switch
+; CHECK: icmp
; CHECK: [[THREADED:[A-Za-z.0-9]+]]:
; CHECK: store
; CHECK: br
Index: llvm/trunk/test/Transforms/JumpThreading/pr15851_hang.ll
===================================================================
--- llvm/trunk/test/Transforms/JumpThreading/pr15851_hang.ll
+++ llvm/trunk/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
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3991.10502.patch
Type: text/x-patch
Size: 1713 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140617/64ad86a5/attachment.bin>
More information about the llvm-commits
mailing list