1; RUN: opt < %s -correlated-propagation
2
3; PR8161
4define void @test1() nounwind ssp {
5entry:
6  br label %for.end
7
8for.cond.us.us:                                   ; preds = %for.cond.us.us
9  %cmp6.i.us.us = icmp sgt i32 1, 0
10  %lor.ext.i.us.us = zext i1 %cmp6.i.us.us to i32
11  %lor.ext.add.i.us.us = select i1 %cmp6.i.us.us, i32 %lor.ext.i.us.us, i32 undef
12  %conv.i.us.us = trunc i32 %lor.ext.add.i.us.us to i16
13  %sext.us.us = shl i16 %conv.i.us.us, 8
14  %conv6.us.us = ashr i16 %sext.us.us, 8
15  %and.us.us = and i16 %conv6.us.us, %and.us.us
16  br i1 false, label %for.end, label %for.cond.us.us
17
18for.end:                                          ; preds = %for.cond.us, %for.cond.us.us, %entry
19  ret void
20}
21
22; PR 8790
23define void @test2() nounwind ssp {
24entry:
25  br label %func_29.exit
26
27sdf.exit.i:
28  %l_44.1.mux.i = select i1 %tobool5.not.i, i8 %l_44.1.mux.i, i8 1
29  br label %srf.exit.i
30
31srf.exit.i:
32  %tobool5.not.i = icmp ne i8 undef, 0
33  br i1 %tobool5.not.i, label %sdf.exit.i, label %func_29.exit
34
35func_29.exit:
36  ret void
37}
38
39; PR13972
40define void @test3() nounwind {
41for.body:
42  br label %return
43
44for.cond.i:                                       ; preds = %if.else.i, %for.body.i
45  %e.2.i = phi i32 [ %e.2.i, %if.else.i ], [ -8, %for.body.i ]
46  br i1 undef, label %return, label %for.body.i
47
48for.body.i:                                       ; preds = %for.cond.i
49  switch i32 %e.2.i, label %for.cond3.i [
50    i32 -3, label %if.else.i
51    i32 0, label %for.cond.i
52  ]
53
54for.cond3.i:                                      ; preds = %for.cond3.i, %for.body.i
55  br label %for.cond3.i
56
57if.else.i:                                        ; preds = %for.body.i
58  br label %for.cond.i
59
60return:                                           ; preds = %for.cond.i, %for.body
61  ret void
62}
63
64define i1 @test4(i32 %int) {
65  %a0 = icmp ult i32 %int, 100
66  %a1 = and i1 %a0, %a0
67  %a2 = and i1 %a1, %a1
68  %a3 = and i1 %a2, %a2
69  %a4 = and i1 %a3, %a3
70  %a5 = and i1 %a4, %a4
71  %a6 = and i1 %a5, %a5
72  %a7 = and i1 %a6, %a6
73  %a8 = and i1 %a7, %a7
74  %a9 = and i1 %a8, %a8
75  %a10 = and i1 %a9, %a9
76  %a11 = and i1 %a10, %a10
77  %a12 = and i1 %a11, %a11
78  %a13 = and i1 %a12, %a12
79  %a14 = and i1 %a13, %a13
80  %a15 = and i1 %a14, %a14
81  %a16 = and i1 %a15, %a15
82  %a17 = and i1 %a16, %a16
83  %a18 = and i1 %a17, %a17
84  %a19 = and i1 %a18, %a18
85  %a20 = and i1 %a19, %a19
86  %a21 = and i1 %a20, %a20
87  %a22 = and i1 %a21, %a21
88  %a23 = and i1 %a22, %a22
89  %a24 = and i1 %a23, %a23
90  %a25 = and i1 %a24, %a24
91  %a26 = and i1 %a25, %a25
92  %a27 = and i1 %a26, %a26
93  %a28 = and i1 %a27, %a27
94  %a29 = and i1 %a28, %a28
95  %a30 = and i1 %a29, %a29
96  %a31 = and i1 %a30, %a30
97  %a32 = and i1 %a31, %a31
98  %a33 = and i1 %a32, %a32
99  %a34 = and i1 %a33, %a33
100  %a35 = and i1 %a34, %a34
101  %a36 = and i1 %a35, %a35
102  %a37 = and i1 %a36, %a36
103  %a38 = and i1 %a37, %a37
104  %a39 = and i1 %a38, %a38
105  %a40 = and i1 %a39, %a39
106  %a41 = and i1 %a40, %a40
107  %a42 = and i1 %a41, %a41
108  %a43 = and i1 %a42, %a42
109  %a44 = and i1 %a43, %a43
110  %a45 = and i1 %a44, %a44
111  %a46 = and i1 %a45, %a45
112  %a47 = and i1 %a46, %a46
113  %a48 = and i1 %a47, %a47
114  %a49 = and i1 %a48, %a48
115  %a50 = and i1 %a49, %a49
116  %a51 = and i1 %a50, %a50
117  %a52 = and i1 %a51, %a51
118  %a53 = and i1 %a52, %a52
119  %a54 = and i1 %a53, %a53
120  %a55 = and i1 %a54, %a54
121  %a56 = and i1 %a55, %a55
122  %a57 = and i1 %a56, %a56
123  %a58 = and i1 %a57, %a57
124  %a59 = and i1 %a58, %a58
125  %a60 = and i1 %a59, %a59
126  %a61 = and i1 %a60, %a60
127  %a62 = and i1 %a61, %a61
128  %a63 = and i1 %a62, %a62
129  %a64 = and i1 %a63, %a63
130  %a65 = and i1 %a64, %a64
131  %a66 = and i1 %a65, %a65
132  %a67 = and i1 %a66, %a66
133  %a68 = and i1 %a67, %a67
134  %a69 = and i1 %a68, %a68
135  %a70 = and i1 %a69, %a69
136  %a71 = and i1 %a70, %a70
137  %a72 = and i1 %a71, %a71
138  %a73 = and i1 %a72, %a72
139  %a74 = and i1 %a73, %a73
140  %a75 = and i1 %a74, %a74
141  %a76 = and i1 %a75, %a75
142  %a77 = and i1 %a76, %a76
143  %a78 = and i1 %a77, %a77
144  %a79 = and i1 %a78, %a78
145  %a80 = and i1 %a79, %a79
146  %a81 = and i1 %a80, %a80
147  %a82 = and i1 %a81, %a81
148  %a83 = and i1 %a82, %a82
149  %a84 = and i1 %a83, %a83
150  %a85 = and i1 %a84, %a84
151  %a86 = and i1 %a85, %a85
152  %a87 = and i1 %a86, %a86
153  %a88 = and i1 %a87, %a87
154  %a89 = and i1 %a88, %a88
155  %a90 = and i1 %a89, %a89
156  %a91 = and i1 %a90, %a90
157  %a92 = and i1 %a91, %a91
158  %a93 = and i1 %a92, %a92
159  %a94 = and i1 %a93, %a93
160  %a95 = and i1 %a94, %a94
161  %a96 = and i1 %a95, %a95
162  %a97 = and i1 %a96, %a96
163  %a98 = and i1 %a97, %a97
164  %a99 = and i1 %a98, %a98
165  %a100 = and i1 %a99, %a99
166  %a101 = and i1 %a100, %a100
167  %a102 = and i1 %a101, %a101
168  %a103 = and i1 %a102, %a102
169  %a104 = and i1 %a103, %a103
170  %a105 = and i1 %a104, %a104
171  %a106 = and i1 %a105, %a105
172  %a107 = and i1 %a106, %a106
173  %a108 = and i1 %a107, %a107
174  %a109 = and i1 %a108, %a108
175  %a110 = and i1 %a109, %a109
176  %a111 = and i1 %a110, %a110
177  %a112 = and i1 %a111, %a111
178  %a113 = and i1 %a112, %a112
179  %a114 = and i1 %a113, %a113
180  %a115 = and i1 %a114, %a114
181  %a116 = and i1 %a115, %a115
182  %a117 = and i1 %a116, %a116
183  %a118 = and i1 %a117, %a117
184  %a119 = and i1 %a118, %a118
185  %a120 = and i1 %a119, %a119
186  %a121 = and i1 %a120, %a120
187  %a122 = and i1 %a121, %a121
188  %a123 = and i1 %a122, %a122
189  %a124 = and i1 %a123, %a123
190  %a125 = and i1 %a124, %a124
191  %a126 = and i1 %a125, %a125
192  %a127 = and i1 %a126, %a126
193  %cond = and i1 %a127, %a127
194  br i1 %cond, label %then, label %else
195
196then:
197  %result = icmp eq i32 %int, 255
198  ret i1 %result
199
200else:
201  ret i1 false
202}
203