[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / Transforms / JumpThreading / pr15851_hang.ll
blob41ca9512dcb8b599e6f50efe9927c30528490575
1 ; RUN: opt -S -jump-threading < %s | FileCheck %s
3 ; CHECK-LABEL: @f(
4 ; CHECK-LABEL: entry
5 ; CHECK-NEXT: ret void
7 ; JumpThreading must detect the next two blocks are unreachable from entry
8 ; and leave them alone. A subsequent pass will remove them from @f.
10 ; CHECK: for.cond1:
11 ; CHECK-NEXT: phi
12 ; CHECK-NEXT: icmp
13 ; CHECK-NEXT: br i1 %cmp, label %for.body, label %for.cond1
14 ; CHECK: for.body:
15 ; CHECK-NEXT: add
16 ; CHECK-NEXT: icmp
17 ; CHECK-NEXT: br i1 %a, label %for.cond1, label %for.cond1
19 define void @f() {
20 entry:
21   ret void
23 for.cond1:
24   %i.025 = phi i32 [ %inc, %for.body ], [ %inc, %for.body ], [ 1, %for.cond1 ]
25   %cmp = icmp slt i32 %i.025, 2
26   br i1 %cmp, label %for.body, label %for.cond1
28 for.body:
29   %inc = add nsw i32 %i.025, 0
30   %a = icmp ugt i32 %inc, 2
31   br i1 %a, label %for.cond1, label %for.cond1