1 ; RUN: opt -correlated-propagation -S < %s | FileCheck %s
5 define i32 @test1(i32 %a) nounwind {
6 %a.off = add i32 %a, -8
7 %cmp = icmp ult i32 %a.off, 8
8 br i1 %cmp, label %then, label %else
11 %dead = icmp eq i32 %a, 7
12 br i1 %dead, label %end, label %else
22 ; CHECK-NEXT: br i1 false, label %end, label %else
25 define i32 @test2(i32 %a) nounwind {
26 %a.off = add i32 %a, -8
27 %cmp = icmp ult i32 %a.off, 8
28 br i1 %cmp, label %then, label %else
31 %dead = icmp ugt i32 %a, 15
32 br i1 %dead, label %end, label %else
42 ; CHECK-NEXT: br i1 false, label %end, label %else
46 define i32 @test3(i32 %c) nounwind {
47 %cmp = icmp slt i32 %c, 2
48 br i1 %cmp, label %if.then, label %if.end
54 %cmp1 = icmp slt i32 %c, 3
55 br i1 %cmp1, label %if.then2, label %if.end8
59 %cmp2 = icmp eq i32 %c, 2
61 br i1 %cmp2, label %if.then4, label %if.end6
75 define i32 @test4(i32 %c) nounwind {
76 switch i32 %c, label %sw.default [
84 %cmp = icmp sge i32 %c, 1
86 br i1 %cmp, label %if.then, label %if.end
98 %retval.0 = phi i32 [ 42, %sw.default ], [ 4, %if.then ], [ 9, %if.end ]
103 define i1 @test5(i32 %c) nounwind {
104 %cmp = icmp slt i32 %c, 5
105 br i1 %cmp, label %if.then, label %if.end
108 %cmp1 = icmp eq i32 %c, 4
109 br i1 %cmp1, label %if.end, label %if.end8
115 %cmp2 = icmp eq i32 %c, 3
116 %cmp3 = icmp eq i32 %c, 4
117 %cmp4 = icmp eq i32 %c, 6
118 ; CHECK: %or = or i1 false, false
119 %or = or i1 %cmp3, %cmp4
120 ; CHECK: ret i1 %cmp2
125 define i1 @test6(i32 %c) nounwind {
126 %cmp = icmp ule i32 %c, 7
127 br i1 %cmp, label %if.then, label %if.end
130 ; CHECK: icmp eq i32 %c, 6
132 switch i32 %c, label %if.end [
141 %cmp2 = icmp eq i32 %c, 6