1*1f1fb208SFlorian Hahn; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*1f1fb208SFlorian Hahn; RUN: opt -passes='loop(loop-interchange),loop-mssa(simple-loop-unswitch<nontrivial>)' -S -verify-scev %s | FileCheck %s
3*1f1fb208SFlorian Hahn
4*1f1fb208SFlorian Hahndeclare void @clobber()
5*1f1fb208SFlorian Hahn
6*1f1fb208SFlorian Hahn; Make sure SCEV loop and block dispositions are properly invalidated after
7*1f1fb208SFlorian Hahn; unswitching.
8*1f1fb208SFlorian Hahndefine void @test_pr58564(i16 %a, i1 %c.1, ptr %dst) {
9*1f1fb208SFlorian Hahn; CHECK-LABEL: @test_pr58564(
10*1f1fb208SFlorian Hahn; CHECK-NEXT:  entry:
11*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[TMP0:%.*]] = icmp ult i16 [[A:%.*]], -6
12*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[TMP0]], label [[ENTRY_SPLIT_US:%.*]], label [[ENTRY_SPLIT:%.*]]
13*1f1fb208SFlorian Hahn; CHECK:       entry.split.us:
14*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[C_1:%.*]], label [[ENTRY_SPLIT_US_SPLIT_US:%.*]], label [[ENTRY_SPLIT_US_SPLIT:%.*]]
15*1f1fb208SFlorian Hahn; CHECK:       entry.split.us.split.us:
16*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_US_US:%.*]]
17*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.us.us:
18*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_SPLIT_US_US_US:%.*]]
19*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.us.us:
20*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_SPLIT_US_SPLIT_US_SPLIT_US_SPLIT_US:%.*]]
21*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.split.us.split.us.split.us:
22*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_SPLIT_US_SPLIT_US_SPLIT_US:%.*]]
23*1f1fb208SFlorian Hahn; CHECK:       entry.split.us.split:
24*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_US:%.*]]
25*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.us:
26*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_SPLIT_US_US:%.*]]
27*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.us5:
28*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_5_US6:%.*]]
29*1f1fb208SFlorian Hahn; CHECK:       loop.5.us6:
30*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[IV_US7:%.*]] = phi i16 [ 0, [[LOOP_4_HEADER_US5:%.*]] ], [ [[IV_NEXT_US9:%.*]], [[LOOP_5_US6]] ]
31*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[GEP_US8:%.*]] = getelementptr inbounds ptr, ptr [[DST:%.*]], i16 [[IV_US7]]
32*1f1fb208SFlorian Hahn; CHECK-NEXT:    store ptr null, ptr [[GEP_US8]], align 8
33*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[IV_NEXT_US9]] = add nuw nsw i16 [[IV_US7]], 1
34*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[EC_US10:%.*]] = icmp ne i16 [[IV_US7]], 10000
35*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[EC_US10]], label [[LOOP_5_US6]], label [[LOOP_4_LATCH_US11:%.*]]
36*1f1fb208SFlorian Hahn; CHECK:       loop.4.latch.us11:
37*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_LATCH_US:%.*]]
38*1f1fb208SFlorian Hahn; CHECK:       loop.1.latch.us:
39*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_US]]
40*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.us:
41*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 false, label [[LOOP_4_HEADER_PREHEADER_SPLIT4_US_SPLIT_US:%.*]], label [[LOOP_4_HEADER_PREHEADER_SPLIT4_US15:%.*]]
42*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.us:
43*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_SPLIT_US_SPLIT_US14:%.*]]
44*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.us.us12:
45*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_US_US13:%.*]]
46*1f1fb208SFlorian Hahn; CHECK:       loop.2.latch.us.us:
47*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 false, label [[LOOP_2_HEADER_US_US12:%.*]], label [[LOOP_4_HEADER_PREHEADER_SPLIT_US_US:%.*]]
48*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.us.us13:
49*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_SPLIT_US3_US:%.*]]
50*1f1fb208SFlorian Hahn; CHECK:       loop.3.header.us.us1.us:
51*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_LATCH_US_US2_US:%.*]]
52*1f1fb208SFlorian Hahn; CHECK:       loop.3.latch.us.us2.us:
53*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_LATCH_SPLIT_US_US_US:%.*]]
54*1f1fb208SFlorian Hahn; CHECK:       loop.2.latch.split.us.us.us:
55*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_LATCH_US_US:%.*]]
56*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.split.us3.us:
57*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_HEADER_US_US1_US:%.*]]
58*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split.us.us:
59*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_PREHEADER_US:%.*]]
60*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.split.us14:
61*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_US_US12]]
62*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split4.us15:
63*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_US5]]
64*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split4.us.split.us:
65*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_PREHEADER_SPLIT4_US:%.*]]
66*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.split.us.split.us:
67*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_SPLIT_US_SPLIT_US:%.*]]
68*1f1fb208SFlorian Hahn; CHECK:       entry.split:
69*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER:%.*]]
70*1f1fb208SFlorian Hahn; CHECK:       loop.1.header:
71*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[TMP1:%.*]] = icmp ult i16 [[A]], -6
72*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[TMP1]], label [[LOOP_1_HEADER_SPLIT_US:%.*]], label [[LOOP_1_HEADER_SPLIT:%.*]]
73*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us:
74*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[C_1]], label [[LOOP_1_HEADER_SPLIT_US_SPLIT_US_SPLIT:%.*]], label [[LOOP_1_HEADER_SPLIT_US_SPLIT:%.*]]
75*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.split.us.split:
76*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER_SPLIT_US_SPLIT_US]]
77*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.split.us:
78*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_US_US:%.*]]
79*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.us.us:
80*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_US_US:%.*]]
81*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.us.us:
82*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_SPLIT_US_SPLIT_US_SPLIT_US:%.*]]
83*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.split.us.split.us.split.us:
84*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_SPLIT_US_SPLIT_US:%.*]]
85*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split.us.split:
86*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_US:%.*]]
87*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.us:
88*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_US:%.*]]
89*1f1fb208SFlorian Hahn; CHECK:       loop.2.latch.us:
90*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 false, label [[LOOP_2_HEADER_US]], label [[LOOP_4_HEADER_PREHEADER_SPLIT_US:%.*]]
91*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.us:
92*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_SPLIT_US3:%.*]]
93*1f1fb208SFlorian Hahn; CHECK:       loop.3.header.us.us1:
94*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_LATCH_US_US2:%.*]]
95*1f1fb208SFlorian Hahn; CHECK:       loop.3.latch.us.us2:
96*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_LATCH_SPLIT_US_US:%.*]]
97*1f1fb208SFlorian Hahn; CHECK:       loop.2.latch.split.us.us:
98*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_LATCH_US:%.*]]
99*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.split.us3:
100*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_HEADER_US_US1:%.*]]
101*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split.us:
102*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_PREHEADER:%.*]]
103*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.split.us.split.us:
104*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_SPLIT_US:%.*]]
105*1f1fb208SFlorian Hahn; CHECK:       loop.1.header.split:
106*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER:%.*]]
107*1f1fb208SFlorian Hahn; CHECK:       loop.2.header:
108*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[TMP2:%.*]] = icmp ult i16 [[A]], -6
109*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[TMP2]], label [[LOOP_2_HEADER_SPLIT_US:%.*]], label [[LOOP_2_HEADER_SPLIT:%.*]]
110*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us:
111*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[C_1]], label [[LOOP_2_HEADER_SPLIT_US_SPLIT_US_SPLIT:%.*]], label [[LOOP_2_HEADER_SPLIT_US_SPLIT:%.*]]
112*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.split.us.split:
113*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_HEADER_SPLIT_US_SPLIT_US]]
114*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.split.us:
115*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_HEADER_US_US:%.*]]
116*1f1fb208SFlorian Hahn; CHECK:       loop.3.header.us.us:
117*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_LATCH_US_US:%.*]]
118*1f1fb208SFlorian Hahn; CHECK:       loop.3.latch.us.us:
119*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_HEADER_US_US]]
120*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split.us.split:
121*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_HEADER_US:%.*]]
122*1f1fb208SFlorian Hahn; CHECK:       loop.3.header.us:
123*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_LATCH_US:%.*]]
124*1f1fb208SFlorian Hahn; CHECK:       loop.3.latch.us:
125*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_LATCH_SPLIT_US:%.*]]
126*1f1fb208SFlorian Hahn; CHECK:       loop.2.latch.split.us:
127*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_LATCH:%.*]]
128*1f1fb208SFlorian Hahn; CHECK:       loop.2.header.split:
129*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_HEADER:%.*]]
130*1f1fb208SFlorian Hahn; CHECK:       loop.3.header:
131*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[TMP3:%.*]] = icmp ult i16 [[A]], -6
132*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[TMP3]], label [[LOOP_3_LATCH:%.*]], label [[LOOP_3_THEN:%.*]]
133*1f1fb208SFlorian Hahn; CHECK:       loop.3.then:
134*1f1fb208SFlorian Hahn; CHECK-NEXT:    call void @clobber()
135*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_3_LATCH]]
136*1f1fb208SFlorian Hahn; CHECK:       loop.3.latch:
137*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[C_1]], label [[LOOP_3_HEADER]], label [[LOOP_2_LATCH_SPLIT:%.*]], !llvm.loop [[LOOP0:![0-9]+]]
138*1f1fb208SFlorian Hahn; CHECK:       loop.2.latch.split:
139*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_2_LATCH]]
140*1f1fb208SFlorian Hahn; CHECK:       loop.2.latch:
141*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[C_1]], label [[LOOP_2_HEADER]], label [[LOOP_4_HEADER_PREHEADER_SPLIT:%.*]], !llvm.loop [[LOOP2:![0-9]+]]
142*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split:
143*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_PREHEADER]]
144*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader:
145*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[C_1]], label [[LOOP_4_HEADER_PREHEADER_SPLIT4_US_SPLIT:%.*]], label [[LOOP_4_HEADER_PREHEADER_SPLIT4:%.*]]
146*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split4.us.split:
147*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_PREHEADER_SPLIT4_US]]
148*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split4.us:
149*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_US:%.*]]
150*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.us:
151*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_5_US:%.*]]
152*1f1fb208SFlorian Hahn; CHECK:       loop.5.us:
153*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[IV_US:%.*]] = phi i16 [ 0, [[LOOP_4_HEADER_US]] ], [ [[IV_NEXT_US:%.*]], [[LOOP_5_US]] ]
154*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[GEP_US:%.*]] = getelementptr inbounds ptr, ptr [[DST]], i16 [[IV_US]]
155*1f1fb208SFlorian Hahn; CHECK-NEXT:    store ptr null, ptr [[GEP_US]], align 8
156*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[IV_NEXT_US]] = add nuw nsw i16 [[IV_US]], 1
157*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[EC_US:%.*]] = icmp ne i16 [[IV_US]], 10000
158*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[EC_US]], label [[LOOP_5_US]], label [[LOOP_4_LATCH_US:%.*]]
159*1f1fb208SFlorian Hahn; CHECK:       loop.4.latch.us:
160*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER_US]]
161*1f1fb208SFlorian Hahn; CHECK:       loop.4.header.preheader.split4:
162*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_4_HEADER:%.*]]
163*1f1fb208SFlorian Hahn; CHECK:       loop.4.header:
164*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_5:%.*]]
165*1f1fb208SFlorian Hahn; CHECK:       loop.5:
166*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[IV:%.*]] = phi i16 [ 0, [[LOOP_4_HEADER]] ], [ [[IV_NEXT:%.*]], [[LOOP_5]] ]
167*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[GEP:%.*]] = getelementptr inbounds ptr, ptr [[DST]], i16 [[IV]]
168*1f1fb208SFlorian Hahn; CHECK-NEXT:    store ptr null, ptr [[GEP]], align 8
169*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[IV_NEXT]] = add nuw nsw i16 [[IV]], 1
170*1f1fb208SFlorian Hahn; CHECK-NEXT:    [[EC:%.*]] = icmp ne i16 [[IV]], 10000
171*1f1fb208SFlorian Hahn; CHECK-NEXT:    br i1 [[EC]], label [[LOOP_5]], label [[LOOP_4_LATCH:%.*]]
172*1f1fb208SFlorian Hahn; CHECK:       loop.4.latch:
173*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_LATCH:%.*]]
174*1f1fb208SFlorian Hahn; CHECK:       loop.1.latch:
175*1f1fb208SFlorian Hahn; CHECK-NEXT:    br label [[LOOP_1_HEADER]], !llvm.loop [[LOOP3:![0-9]+]]
176*1f1fb208SFlorian Hahn;
177*1f1fb208SFlorian Hahnentry:
178*1f1fb208SFlorian Hahn  br label %loop.1.header
179*1f1fb208SFlorian Hahn
180*1f1fb208SFlorian Hahnloop.1.header:
181*1f1fb208SFlorian Hahn  br label %loop.2.header
182*1f1fb208SFlorian Hahn
183*1f1fb208SFlorian Hahnloop.2.header:
184*1f1fb208SFlorian Hahn  br label %loop.3.header
185*1f1fb208SFlorian Hahn
186*1f1fb208SFlorian Hahnloop.3.header:
187*1f1fb208SFlorian Hahn  %0 = icmp ult i16 %a, -6
188*1f1fb208SFlorian Hahn  br i1 %0, label %loop.3.latch, label %loop.3.then
189*1f1fb208SFlorian Hahn
190*1f1fb208SFlorian Hahnloop.3.then:
191*1f1fb208SFlorian Hahn  call void @clobber()
192*1f1fb208SFlorian Hahn  br label %loop.3.latch
193*1f1fb208SFlorian Hahn
194*1f1fb208SFlorian Hahnloop.3.latch:
195*1f1fb208SFlorian Hahn  br i1 %c.1, label %loop.3.header, label %loop.2.latch
196*1f1fb208SFlorian Hahn
197*1f1fb208SFlorian Hahnloop.2.latch:
198*1f1fb208SFlorian Hahn  br i1 %c.1, label %loop.2.header, label %loop.4.header
199*1f1fb208SFlorian Hahn
200*1f1fb208SFlorian Hahnloop.4.header:
201*1f1fb208SFlorian Hahn  br label %loop.5
202*1f1fb208SFlorian Hahn
203*1f1fb208SFlorian Hahnloop.5:
204*1f1fb208SFlorian Hahn  %iv = phi i16 [ 0, %loop.4.header ], [ %iv.next, %loop.5 ]
205*1f1fb208SFlorian Hahn  %gep = getelementptr inbounds ptr, ptr %dst, i16 %iv
206*1f1fb208SFlorian Hahn  store ptr null, ptr %gep, align 8
207*1f1fb208SFlorian Hahn  %iv.next = add nuw nsw i16 %iv, 1
208*1f1fb208SFlorian Hahn  %ec = icmp ne i16 %iv, 10000
209*1f1fb208SFlorian Hahn  br i1 %ec, label %loop.5, label %loop.4.latch
210*1f1fb208SFlorian Hahn
211*1f1fb208SFlorian Hahnloop.4.latch:
212*1f1fb208SFlorian Hahn  br i1 %c.1, label %loop.4.header, label %loop.1.latch
213*1f1fb208SFlorian Hahn
214*1f1fb208SFlorian Hahnloop.1.latch:
215*1f1fb208SFlorian Hahn  br label %loop.1.header
216*1f1fb208SFlorian Hahn}
217