llvm-6502/test/Transforms/JumpThreading/pr15851_hang.ll
Dinesh Dwivedi 199da600f3 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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211103 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-17 14:34:19 +00:00

23 lines
482 B
LLVM

; 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
}