1*9880d681SAndroid Build Coastguard Worker; RUN: opt -loop-reduce -disable-output -debug-only=loop-reduce < %s 2>&1 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; REQUIRES: asserts 3*9880d681SAndroid Build Coastguard Worker; 4*9880d681SAndroid Build Coastguard Worker; PR13361: LSR + SCEV "hangs" on reasonably sized test with sequence of loops 5*9880d681SAndroid Build Coastguard Worker; 6*9880d681SAndroid Build Coastguard Worker; Without limits on CollectSubexpr, we have thousands of formulae for 7*9880d681SAndroid Build Coastguard Worker; the use that crosses loops. With limits we have five. 8*9880d681SAndroid Build Coastguard Worker; CHECK: LSR on loop %bb221: 9*9880d681SAndroid Build Coastguard Worker; CHECK: After generating reuse formulae: 10*9880d681SAndroid Build Coastguard Worker; CHECK: LSR is examining the following uses: 11*9880d681SAndroid Build Coastguard Worker; CHECK: LSR Use: Kind=Special 12*9880d681SAndroid Build Coastguard Worker; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}} 13*9880d681SAndroid Build Coastguard Worker; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}} 14*9880d681SAndroid Build Coastguard Worker; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}} 15*9880d681SAndroid Build Coastguard Worker; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}} 16*9880d681SAndroid Build Coastguard Worker; CHECK: {{.*reg\(\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{.*\{}} 17*9880d681SAndroid Build Coastguard Worker; CHECK-NOT:reg 18*9880d681SAndroid Build Coastguard Worker; CHECK: Filtering for use 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker; Provide legal integer types. 21*9880d681SAndroid Build Coastguard Workertarget datalayout = "n8:16:32:64" 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker%struct.snork = type { %struct.fuga, i32, i32, i32, i32, i32, i32 } 25*9880d681SAndroid Build Coastguard Worker%struct.fuga = type { %struct.gork, i64 } 26*9880d681SAndroid Build Coastguard Worker%struct.gork = type { i8*, i32, i32, %struct.noot* } 27*9880d681SAndroid Build Coastguard Worker%struct.noot = type opaque 28*9880d681SAndroid Build Coastguard Worker%struct.jim = type { [5120 x i8], i32, i32, [2048 x i8], i32, [256 x i8] } 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker@global = external global %struct.snork, align 8 31*9880d681SAndroid Build Coastguard Worker@global1 = external hidden unnamed_addr constant [52 x i8], align 1 32*9880d681SAndroid Build Coastguard Worker@global2 = external hidden unnamed_addr constant [18 x i8], align 1 33*9880d681SAndroid Build Coastguard Worker@global3 = external hidden global %struct.jim, align 32 34*9880d681SAndroid Build Coastguard Worker@global4 = external hidden unnamed_addr constant [40 x i8], align 1 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdeclare void @snork(...) nounwind 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerdeclare fastcc void @blarg() nounwind uwtable readonly 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine hidden fastcc void @boogle() nounwind uwtable { 41*9880d681SAndroid Build Coastguard Workerbb: 42*9880d681SAndroid Build Coastguard Worker %tmp = trunc i64 0 to i32 43*9880d681SAndroid Build Coastguard Worker %tmp1 = icmp slt i32 %tmp, 2047 44*9880d681SAndroid Build Coastguard Worker %tmp2 = add i32 0, -1 45*9880d681SAndroid Build Coastguard Worker %tmp3 = icmp ult i32 %tmp2, 255 46*9880d681SAndroid Build Coastguard Worker %tmp4 = and i1 %tmp1, %tmp3 47*9880d681SAndroid Build Coastguard Worker br i1 %tmp4, label %bb6, label %bb5 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerbb5: ; preds = %bb 50*9880d681SAndroid Build Coastguard Worker tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2021) nounwind 51*9880d681SAndroid Build Coastguard Worker tail call void (...) @snork(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 1), i32 -2146631418) nounwind 52*9880d681SAndroid Build Coastguard Worker unreachable 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerbb6: ; preds = %bb 55*9880d681SAndroid Build Coastguard Worker tail call void @zot(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 0), i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 1), i64 undef, i32 1, i1 false) nounwind 56*9880d681SAndroid Build Coastguard Worker %tmp7 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 undef 57*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %tmp7, align 1 58*9880d681SAndroid Build Coastguard Worker %tmp8 = add nsw i32 0, 1 59*9880d681SAndroid Build Coastguard Worker %tmp9 = sext i32 %tmp8 to i64 60*9880d681SAndroid Build Coastguard Worker %tmp10 = add i64 %tmp9, 1 61*9880d681SAndroid Build Coastguard Worker %tmp11 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 %tmp10 62*9880d681SAndroid Build Coastguard Worker %tmp12 = sub i64 2047, %tmp9 63*9880d681SAndroid Build Coastguard Worker %tmp13 = icmp eq i32 undef, 1 64*9880d681SAndroid Build Coastguard Worker br i1 %tmp13, label %bb14, label %bb15 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerbb14: ; preds = %bb6 67*9880d681SAndroid Build Coastguard Worker tail call fastcc void @blarg() 68*9880d681SAndroid Build Coastguard Worker unreachable 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Workerbb15: ; preds = %bb6 71*9880d681SAndroid Build Coastguard Worker %tmp16 = trunc i64 %tmp12 to i32 72*9880d681SAndroid Build Coastguard Worker br label %bb17 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerbb17: ; preds = %bb26, %bb15 75*9880d681SAndroid Build Coastguard Worker %tmp18 = phi i64 [ %tmp28, %bb26 ], [ 0, %bb15 ] 76*9880d681SAndroid Build Coastguard Worker %tmp19 = phi i32 [ %tmp29, %bb26 ], [ 0, %bb15 ] 77*9880d681SAndroid Build Coastguard Worker %tmp20 = trunc i64 %tmp18 to i32 78*9880d681SAndroid Build Coastguard Worker %tmp21 = icmp slt i32 %tmp20, %tmp16 79*9880d681SAndroid Build Coastguard Worker br i1 %tmp21, label %bb22, label %bb32 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Workerbb22: ; preds = %bb17 82*9880d681SAndroid Build Coastguard Worker %tmp23 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 0 83*9880d681SAndroid Build Coastguard Worker %tmp24 = load i8, i8* %tmp23, align 1 84*9880d681SAndroid Build Coastguard Worker %tmp25 = icmp eq i8 %tmp24, 58 85*9880d681SAndroid Build Coastguard Worker br i1 %tmp25, label %bb30, label %bb26 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Workerbb26: ; preds = %bb22 88*9880d681SAndroid Build Coastguard Worker %tmp27 = icmp eq i8 %tmp24, 0 89*9880d681SAndroid Build Coastguard Worker %tmp28 = add i64 %tmp18, 1 90*9880d681SAndroid Build Coastguard Worker %tmp29 = add nsw i32 %tmp19, 1 91*9880d681SAndroid Build Coastguard Worker br i1 %tmp27, label %bb32, label %bb17 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerbb30: ; preds = %bb22 94*9880d681SAndroid Build Coastguard Worker %tmp31 = icmp ult i32 undef, 255 95*9880d681SAndroid Build Coastguard Worker br i1 %tmp31, label %bb33, label %bb32 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workerbb32: ; preds = %bb30, %bb26, %bb17 98*9880d681SAndroid Build Coastguard Worker tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2038) nounwind 99*9880d681SAndroid Build Coastguard Worker tail call void (...) @snork(i8* %tmp11, i32 -2146631418) nounwind 100*9880d681SAndroid Build Coastguard Worker unreachable 101*9880d681SAndroid Build Coastguard Worker 102*9880d681SAndroid Build Coastguard Workerbb33: ; preds = %bb30 103*9880d681SAndroid Build Coastguard Worker tail call void @zot(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 0), i8* %tmp11, i64 undef, i32 1, i1 false) nounwind 104*9880d681SAndroid Build Coastguard Worker %tmp34 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 undef 105*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %tmp34, align 1 106*9880d681SAndroid Build Coastguard Worker %tmp35 = add nsw i32 %tmp19, 1 107*9880d681SAndroid Build Coastguard Worker %tmp36 = sext i32 %tmp35 to i64 108*9880d681SAndroid Build Coastguard Worker %tmp37 = add i64 %tmp36, %tmp10 109*9880d681SAndroid Build Coastguard Worker %tmp38 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 %tmp37 110*9880d681SAndroid Build Coastguard Worker %tmp39 = sub i64 %tmp12, %tmp36 111*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb40, label %bb41 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workerbb40: ; preds = %bb33 114*9880d681SAndroid Build Coastguard Worker br label %bb41 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerbb41: ; preds = %bb40, %bb33 117*9880d681SAndroid Build Coastguard Worker %tmp42 = trunc i64 %tmp39 to i32 118*9880d681SAndroid Build Coastguard Worker br label %bb43 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerbb43: ; preds = %bb52, %bb41 121*9880d681SAndroid Build Coastguard Worker %tmp44 = phi i64 [ %tmp53, %bb52 ], [ 0, %bb41 ] 122*9880d681SAndroid Build Coastguard Worker %tmp45 = phi i32 [ %tmp54, %bb52 ], [ 0, %bb41 ] 123*9880d681SAndroid Build Coastguard Worker %tmp46 = trunc i64 %tmp44 to i32 124*9880d681SAndroid Build Coastguard Worker %tmp47 = icmp slt i32 %tmp46, %tmp42 125*9880d681SAndroid Build Coastguard Worker br i1 %tmp47, label %bb48, label %bb58 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Workerbb48: ; preds = %bb43 128*9880d681SAndroid Build Coastguard Worker %tmp49 = add i64 %tmp44, %tmp37 129*9880d681SAndroid Build Coastguard Worker %tmp50 = load i8, i8* undef, align 1 130*9880d681SAndroid Build Coastguard Worker %tmp51 = icmp eq i8 %tmp50, 58 131*9880d681SAndroid Build Coastguard Worker br i1 %tmp51, label %bb55, label %bb52 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Workerbb52: ; preds = %bb48 134*9880d681SAndroid Build Coastguard Worker %tmp53 = add i64 %tmp44, 1 135*9880d681SAndroid Build Coastguard Worker %tmp54 = add nsw i32 %tmp45, 1 136*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb58, label %bb43 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerbb55: ; preds = %bb48 139*9880d681SAndroid Build Coastguard Worker %tmp56 = add i32 %tmp45, -1 140*9880d681SAndroid Build Coastguard Worker %tmp57 = icmp ult i32 %tmp56, 255 141*9880d681SAndroid Build Coastguard Worker br i1 %tmp57, label %bb59, label %bb58 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Workerbb58: ; preds = %bb55, %bb52, %bb43 144*9880d681SAndroid Build Coastguard Worker tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2055) nounwind 145*9880d681SAndroid Build Coastguard Worker tail call void (...) @snork(i8* %tmp38, i32 -2146631418) nounwind 146*9880d681SAndroid Build Coastguard Worker br label %bb247 147*9880d681SAndroid Build Coastguard Worker 148*9880d681SAndroid Build Coastguard Workerbb59: ; preds = %bb55 149*9880d681SAndroid Build Coastguard Worker %tmp60 = sext i32 %tmp45 to i64 150*9880d681SAndroid Build Coastguard Worker tail call void @zot(i8* getelementptr inbounds (%struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 0), i8* %tmp38, i64 %tmp60, i32 1, i1 false) nounwind 151*9880d681SAndroid Build Coastguard Worker %tmp61 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 5, i64 %tmp60 152*9880d681SAndroid Build Coastguard Worker store i8 0, i8* %tmp61, align 1 153*9880d681SAndroid Build Coastguard Worker %tmp62 = add nsw i32 %tmp45, 1 154*9880d681SAndroid Build Coastguard Worker %tmp63 = sext i32 %tmp62 to i64 155*9880d681SAndroid Build Coastguard Worker %tmp64 = add i64 %tmp63, %tmp37 156*9880d681SAndroid Build Coastguard Worker %tmp65 = sub i64 %tmp39, %tmp63 157*9880d681SAndroid Build Coastguard Worker %tmp66 = icmp eq i32 undef, 2 158*9880d681SAndroid Build Coastguard Worker br i1 %tmp66, label %bb67, label %bb68 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Workerbb67: ; preds = %bb59 161*9880d681SAndroid Build Coastguard Worker tail call fastcc void @blarg() 162*9880d681SAndroid Build Coastguard Worker unreachable 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Workerbb68: ; preds = %bb59 165*9880d681SAndroid Build Coastguard Worker switch i32 undef, label %bb71 [ 166*9880d681SAndroid Build Coastguard Worker i32 0, label %bb74 167*9880d681SAndroid Build Coastguard Worker i32 -1, label %bb69 168*9880d681SAndroid Build Coastguard Worker ] 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Workerbb69: ; preds = %bb68 171*9880d681SAndroid Build Coastguard Worker tail call void (...) @snork(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @global1, i64 0, i64 0), i32 2071) nounwind 172*9880d681SAndroid Build Coastguard Worker %tmp70 = load i32, i32* getelementptr inbounds (%struct.snork, %struct.snork* @global, i64 0, i32 2), align 4 173*9880d681SAndroid Build Coastguard Worker unreachable 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Workerbb71: ; preds = %bb68 176*9880d681SAndroid Build Coastguard Worker %tmp72 = load i32, i32* getelementptr inbounds (%struct.snork, %struct.snork* @global, i64 0, i32 4), align 4 177*9880d681SAndroid Build Coastguard Worker %tmp73 = icmp eq i32 undef, 0 178*9880d681SAndroid Build Coastguard Worker br i1 %tmp73, label %bb247, label %bb74 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Workerbb74: ; preds = %bb71, %bb68 181*9880d681SAndroid Build Coastguard Worker %tmp75 = trunc i64 %tmp65 to i32 182*9880d681SAndroid Build Coastguard Worker br label %bb76 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Workerbb76: ; preds = %bb82, %bb74 185*9880d681SAndroid Build Coastguard Worker %tmp77 = phi i64 [ %tmp84, %bb82 ], [ 0, %bb74 ] 186*9880d681SAndroid Build Coastguard Worker %tmp78 = phi i32 [ %tmp85, %bb82 ], [ 0, %bb74 ] 187*9880d681SAndroid Build Coastguard Worker %tmp79 = trunc i64 %tmp77 to i32 188*9880d681SAndroid Build Coastguard Worker %tmp80 = icmp slt i32 %tmp79, %tmp75 189*9880d681SAndroid Build Coastguard Worker br i1 %tmp80, label %bb81, label %bb87 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Workerbb81: ; preds = %bb76 192*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb86, label %bb82 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Workerbb82: ; preds = %bb81 195*9880d681SAndroid Build Coastguard Worker %tmp83 = icmp eq i8 0, 0 196*9880d681SAndroid Build Coastguard Worker %tmp84 = add i64 %tmp77, 1 197*9880d681SAndroid Build Coastguard Worker %tmp85 = add nsw i32 %tmp78, 1 198*9880d681SAndroid Build Coastguard Worker br i1 %tmp83, label %bb87, label %bb76 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Workerbb86: ; preds = %bb81 201*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb88, label %bb87 202*9880d681SAndroid Build Coastguard Worker 203*9880d681SAndroid Build Coastguard Workerbb87: ; preds = %bb86, %bb82, %bb76 204*9880d681SAndroid Build Coastguard Worker unreachable 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Workerbb88: ; preds = %bb86 207*9880d681SAndroid Build Coastguard Worker %tmp89 = add nsw i32 %tmp78, 1 208*9880d681SAndroid Build Coastguard Worker %tmp90 = sext i32 %tmp89 to i64 209*9880d681SAndroid Build Coastguard Worker %tmp91 = add i64 %tmp90, %tmp64 210*9880d681SAndroid Build Coastguard Worker %tmp92 = sub i64 %tmp65, %tmp90 211*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb93, label %bb94 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Workerbb93: ; preds = %bb88 214*9880d681SAndroid Build Coastguard Worker unreachable 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Workerbb94: ; preds = %bb88 217*9880d681SAndroid Build Coastguard Worker %tmp95 = trunc i64 %tmp92 to i32 218*9880d681SAndroid Build Coastguard Worker br label %bb96 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerbb96: ; preds = %bb102, %bb94 221*9880d681SAndroid Build Coastguard Worker %tmp97 = phi i64 [ %tmp103, %bb102 ], [ 0, %bb94 ] 222*9880d681SAndroid Build Coastguard Worker %tmp98 = phi i32 [ %tmp104, %bb102 ], [ 0, %bb94 ] 223*9880d681SAndroid Build Coastguard Worker %tmp99 = trunc i64 %tmp97 to i32 224*9880d681SAndroid Build Coastguard Worker %tmp100 = icmp slt i32 %tmp99, %tmp95 225*9880d681SAndroid Build Coastguard Worker br i1 %tmp100, label %bb101, label %bb106 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Workerbb101: ; preds = %bb96 228*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb105, label %bb102 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Workerbb102: ; preds = %bb101 231*9880d681SAndroid Build Coastguard Worker %tmp103 = add i64 %tmp97, 1 232*9880d681SAndroid Build Coastguard Worker %tmp104 = add nsw i32 %tmp98, 1 233*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb106, label %bb96 234*9880d681SAndroid Build Coastguard Worker 235*9880d681SAndroid Build Coastguard Workerbb105: ; preds = %bb101 236*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb107, label %bb106 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerbb106: ; preds = %bb105, %bb102, %bb96 239*9880d681SAndroid Build Coastguard Worker br label %bb247 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Workerbb107: ; preds = %bb105 242*9880d681SAndroid Build Coastguard Worker %tmp108 = add nsw i32 %tmp98, 1 243*9880d681SAndroid Build Coastguard Worker %tmp109 = sext i32 %tmp108 to i64 244*9880d681SAndroid Build Coastguard Worker %tmp110 = add i64 %tmp109, %tmp91 245*9880d681SAndroid Build Coastguard Worker %tmp111 = sub i64 %tmp92, %tmp109 246*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb112, label %bb113 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerbb112: ; preds = %bb107 249*9880d681SAndroid Build Coastguard Worker unreachable 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Workerbb113: ; preds = %bb107 252*9880d681SAndroid Build Coastguard Worker %tmp114 = trunc i64 %tmp111 to i32 253*9880d681SAndroid Build Coastguard Worker br label %bb115 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Workerbb115: ; preds = %bb121, %bb113 256*9880d681SAndroid Build Coastguard Worker %tmp116 = phi i64 [ %tmp122, %bb121 ], [ 0, %bb113 ] 257*9880d681SAndroid Build Coastguard Worker %tmp117 = phi i32 [ %tmp123, %bb121 ], [ 0, %bb113 ] 258*9880d681SAndroid Build Coastguard Worker %tmp118 = trunc i64 %tmp116 to i32 259*9880d681SAndroid Build Coastguard Worker %tmp119 = icmp slt i32 %tmp118, %tmp114 260*9880d681SAndroid Build Coastguard Worker br i1 %tmp119, label %bb120, label %bb125 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerbb120: ; preds = %bb115 263*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb124, label %bb121 264*9880d681SAndroid Build Coastguard Worker 265*9880d681SAndroid Build Coastguard Workerbb121: ; preds = %bb120 266*9880d681SAndroid Build Coastguard Worker %tmp122 = add i64 %tmp116, 1 267*9880d681SAndroid Build Coastguard Worker %tmp123 = add nsw i32 %tmp117, 1 268*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb125, label %bb115 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Workerbb124: ; preds = %bb120 271*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb126, label %bb125 272*9880d681SAndroid Build Coastguard Worker 273*9880d681SAndroid Build Coastguard Workerbb125: ; preds = %bb124, %bb121, %bb115 274*9880d681SAndroid Build Coastguard Worker unreachable 275*9880d681SAndroid Build Coastguard Worker 276*9880d681SAndroid Build Coastguard Workerbb126: ; preds = %bb124 277*9880d681SAndroid Build Coastguard Worker %tmp127 = add nsw i32 %tmp117, 1 278*9880d681SAndroid Build Coastguard Worker %tmp128 = sext i32 %tmp127 to i64 279*9880d681SAndroid Build Coastguard Worker %tmp129 = add i64 %tmp128, %tmp110 280*9880d681SAndroid Build Coastguard Worker %tmp130 = sub i64 %tmp111, %tmp128 281*9880d681SAndroid Build Coastguard Worker tail call fastcc void @blarg() 282*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb132, label %bb131 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Workerbb131: ; preds = %bb126 285*9880d681SAndroid Build Coastguard Worker unreachable 286*9880d681SAndroid Build Coastguard Worker 287*9880d681SAndroid Build Coastguard Workerbb132: ; preds = %bb126 288*9880d681SAndroid Build Coastguard Worker %tmp133 = trunc i64 %tmp130 to i32 289*9880d681SAndroid Build Coastguard Worker br label %bb134 290*9880d681SAndroid Build Coastguard Worker 291*9880d681SAndroid Build Coastguard Workerbb134: ; preds = %bb140, %bb132 292*9880d681SAndroid Build Coastguard Worker %tmp135 = phi i64 [ %tmp141, %bb140 ], [ 0, %bb132 ] 293*9880d681SAndroid Build Coastguard Worker %tmp136 = phi i32 [ %tmp142, %bb140 ], [ 0, %bb132 ] 294*9880d681SAndroid Build Coastguard Worker %tmp137 = trunc i64 %tmp135 to i32 295*9880d681SAndroid Build Coastguard Worker %tmp138 = icmp slt i32 %tmp137, %tmp133 296*9880d681SAndroid Build Coastguard Worker br i1 %tmp138, label %bb139, label %bb144 297*9880d681SAndroid Build Coastguard Worker 298*9880d681SAndroid Build Coastguard Workerbb139: ; preds = %bb134 299*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb143, label %bb140 300*9880d681SAndroid Build Coastguard Worker 301*9880d681SAndroid Build Coastguard Workerbb140: ; preds = %bb139 302*9880d681SAndroid Build Coastguard Worker %tmp141 = add i64 %tmp135, 1 303*9880d681SAndroid Build Coastguard Worker %tmp142 = add nsw i32 %tmp136, 1 304*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb144, label %bb134 305*9880d681SAndroid Build Coastguard Worker 306*9880d681SAndroid Build Coastguard Workerbb143: ; preds = %bb139 307*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb145, label %bb144 308*9880d681SAndroid Build Coastguard Worker 309*9880d681SAndroid Build Coastguard Workerbb144: ; preds = %bb143, %bb140, %bb134 310*9880d681SAndroid Build Coastguard Worker br label %bb247 311*9880d681SAndroid Build Coastguard Worker 312*9880d681SAndroid Build Coastguard Workerbb145: ; preds = %bb143 313*9880d681SAndroid Build Coastguard Worker %tmp146 = add nsw i32 %tmp136, 1 314*9880d681SAndroid Build Coastguard Worker %tmp147 = sext i32 %tmp146 to i64 315*9880d681SAndroid Build Coastguard Worker %tmp148 = add i64 %tmp147, %tmp129 316*9880d681SAndroid Build Coastguard Worker %tmp149 = sub i64 %tmp130, %tmp147 317*9880d681SAndroid Build Coastguard Worker switch i32 0, label %bb152 [ 318*9880d681SAndroid Build Coastguard Worker i32 0, label %bb150 319*9880d681SAndroid Build Coastguard Worker i32 16, label %bb150 320*9880d681SAndroid Build Coastguard Worker i32 32, label %bb150 321*9880d681SAndroid Build Coastguard Worker i32 48, label %bb150 322*9880d681SAndroid Build Coastguard Worker i32 64, label %bb150 323*9880d681SAndroid Build Coastguard Worker i32 256, label %bb150 324*9880d681SAndroid Build Coastguard Worker i32 4096, label %bb150 325*9880d681SAndroid Build Coastguard Worker ] 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Workerbb150: ; preds = %bb145, %bb145, %bb145, %bb145, %bb145, %bb145, %bb145 328*9880d681SAndroid Build Coastguard Worker %tmp151 = trunc i64 %tmp149 to i32 329*9880d681SAndroid Build Coastguard Worker br label %bb153 330*9880d681SAndroid Build Coastguard Worker 331*9880d681SAndroid Build Coastguard Workerbb152: ; preds = %bb145 332*9880d681SAndroid Build Coastguard Worker unreachable 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Workerbb153: ; preds = %bb160, %bb150 335*9880d681SAndroid Build Coastguard Worker %tmp154 = phi i64 [ %tmp161, %bb160 ], [ 0, %bb150 ] 336*9880d681SAndroid Build Coastguard Worker %tmp155 = phi i32 [ %tmp162, %bb160 ], [ 0, %bb150 ] 337*9880d681SAndroid Build Coastguard Worker %tmp156 = trunc i64 %tmp154 to i32 338*9880d681SAndroid Build Coastguard Worker %tmp157 = icmp slt i32 %tmp156, %tmp151 339*9880d681SAndroid Build Coastguard Worker br i1 %tmp157, label %bb158, label %bb166 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Workerbb158: ; preds = %bb153 342*9880d681SAndroid Build Coastguard Worker %tmp159 = add i64 %tmp154, %tmp148 343*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb163, label %bb160 344*9880d681SAndroid Build Coastguard Worker 345*9880d681SAndroid Build Coastguard Workerbb160: ; preds = %bb158 346*9880d681SAndroid Build Coastguard Worker %tmp161 = add i64 %tmp154, 1 347*9880d681SAndroid Build Coastguard Worker %tmp162 = add nsw i32 %tmp155, 1 348*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb166, label %bb153 349*9880d681SAndroid Build Coastguard Worker 350*9880d681SAndroid Build Coastguard Workerbb163: ; preds = %bb158 351*9880d681SAndroid Build Coastguard Worker %tmp164 = add i32 %tmp155, -1 352*9880d681SAndroid Build Coastguard Worker %tmp165 = icmp ult i32 %tmp164, 255 353*9880d681SAndroid Build Coastguard Worker br i1 %tmp165, label %bb167, label %bb166 354*9880d681SAndroid Build Coastguard Worker 355*9880d681SAndroid Build Coastguard Workerbb166: ; preds = %bb163, %bb160, %bb153 356*9880d681SAndroid Build Coastguard Worker unreachable 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard Workerbb167: ; preds = %bb163 359*9880d681SAndroid Build Coastguard Worker %tmp168 = add nsw i32 %tmp155, 1 360*9880d681SAndroid Build Coastguard Worker %tmp169 = sext i32 %tmp168 to i64 361*9880d681SAndroid Build Coastguard Worker %tmp170 = add i64 %tmp169, %tmp148 362*9880d681SAndroid Build Coastguard Worker %tmp171 = sub i64 %tmp149, %tmp169 363*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb173, label %bb172 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Workerbb172: ; preds = %bb167 366*9880d681SAndroid Build Coastguard Worker unreachable 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Workerbb173: ; preds = %bb167 369*9880d681SAndroid Build Coastguard Worker %tmp174 = trunc i64 %tmp171 to i32 370*9880d681SAndroid Build Coastguard Worker br label %bb175 371*9880d681SAndroid Build Coastguard Worker 372*9880d681SAndroid Build Coastguard Workerbb175: ; preds = %bb181, %bb173 373*9880d681SAndroid Build Coastguard Worker %tmp176 = phi i64 [ %tmp183, %bb181 ], [ 0, %bb173 ] 374*9880d681SAndroid Build Coastguard Worker %tmp177 = phi i32 [ %tmp184, %bb181 ], [ 0, %bb173 ] 375*9880d681SAndroid Build Coastguard Worker %tmp178 = trunc i64 %tmp176 to i32 376*9880d681SAndroid Build Coastguard Worker %tmp179 = icmp slt i32 %tmp178, %tmp174 377*9880d681SAndroid Build Coastguard Worker br i1 %tmp179, label %bb180, label %bb186 378*9880d681SAndroid Build Coastguard Worker 379*9880d681SAndroid Build Coastguard Workerbb180: ; preds = %bb175 380*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb185, label %bb181 381*9880d681SAndroid Build Coastguard Worker 382*9880d681SAndroid Build Coastguard Workerbb181: ; preds = %bb180 383*9880d681SAndroid Build Coastguard Worker %tmp182 = icmp eq i8 0, 0 384*9880d681SAndroid Build Coastguard Worker %tmp183 = add i64 %tmp176, 1 385*9880d681SAndroid Build Coastguard Worker %tmp184 = add nsw i32 %tmp177, 1 386*9880d681SAndroid Build Coastguard Worker br i1 %tmp182, label %bb186, label %bb175 387*9880d681SAndroid Build Coastguard Worker 388*9880d681SAndroid Build Coastguard Workerbb185: ; preds = %bb180 389*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb187, label %bb186 390*9880d681SAndroid Build Coastguard Worker 391*9880d681SAndroid Build Coastguard Workerbb186: ; preds = %bb185, %bb181, %bb175 392*9880d681SAndroid Build Coastguard Worker unreachable 393*9880d681SAndroid Build Coastguard Worker 394*9880d681SAndroid Build Coastguard Workerbb187: ; preds = %bb185 395*9880d681SAndroid Build Coastguard Worker %tmp188 = add nsw i32 %tmp177, 1 396*9880d681SAndroid Build Coastguard Worker %tmp189 = sext i32 %tmp188 to i64 397*9880d681SAndroid Build Coastguard Worker %tmp190 = sub i64 %tmp171, %tmp189 398*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb192, label %bb191 399*9880d681SAndroid Build Coastguard Worker 400*9880d681SAndroid Build Coastguard Workerbb191: ; preds = %bb187 401*9880d681SAndroid Build Coastguard Worker unreachable 402*9880d681SAndroid Build Coastguard Worker 403*9880d681SAndroid Build Coastguard Workerbb192: ; preds = %bb187 404*9880d681SAndroid Build Coastguard Worker %tmp193 = trunc i64 %tmp190 to i32 405*9880d681SAndroid Build Coastguard Worker br label %bb194 406*9880d681SAndroid Build Coastguard Worker 407*9880d681SAndroid Build Coastguard Workerbb194: ; preds = %bb200, %bb192 408*9880d681SAndroid Build Coastguard Worker %tmp195 = phi i64 [ %tmp201, %bb200 ], [ 0, %bb192 ] 409*9880d681SAndroid Build Coastguard Worker %tmp196 = phi i32 [ %tmp202, %bb200 ], [ 0, %bb192 ] 410*9880d681SAndroid Build Coastguard Worker %tmp197 = trunc i64 %tmp195 to i32 411*9880d681SAndroid Build Coastguard Worker %tmp198 = icmp slt i32 %tmp197, %tmp193 412*9880d681SAndroid Build Coastguard Worker br i1 %tmp198, label %bb199, label %bb204 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Workerbb199: ; preds = %bb194 415*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb203, label %bb200 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Workerbb200: ; preds = %bb199 418*9880d681SAndroid Build Coastguard Worker %tmp201 = add i64 %tmp195, 1 419*9880d681SAndroid Build Coastguard Worker %tmp202 = add nsw i32 %tmp196, 1 420*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb204, label %bb194 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerbb203: ; preds = %bb199 423*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb205, label %bb204 424*9880d681SAndroid Build Coastguard Worker 425*9880d681SAndroid Build Coastguard Workerbb204: ; preds = %bb203, %bb200, %bb194 426*9880d681SAndroid Build Coastguard Worker unreachable 427*9880d681SAndroid Build Coastguard Worker 428*9880d681SAndroid Build Coastguard Workerbb205: ; preds = %bb203 429*9880d681SAndroid Build Coastguard Worker %tmp206 = add nsw i32 %tmp196, 1 430*9880d681SAndroid Build Coastguard Worker %tmp207 = sext i32 %tmp206 to i64 431*9880d681SAndroid Build Coastguard Worker %tmp208 = add i64 %tmp207, 0 432*9880d681SAndroid Build Coastguard Worker %tmp209 = sub i64 %tmp190, %tmp207 433*9880d681SAndroid Build Coastguard Worker br i1 %tmp13, label %bb210, label %bb211 434*9880d681SAndroid Build Coastguard Worker 435*9880d681SAndroid Build Coastguard Workerbb210: ; preds = %bb205 436*9880d681SAndroid Build Coastguard Worker unreachable 437*9880d681SAndroid Build Coastguard Worker 438*9880d681SAndroid Build Coastguard Workerbb211: ; preds = %bb205 439*9880d681SAndroid Build Coastguard Worker %tmp212 = trunc i64 %tmp209 to i32 440*9880d681SAndroid Build Coastguard Worker %tmp213 = icmp slt i32 0, %tmp212 441*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb215, label %bb214 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Workerbb214: ; preds = %bb211 444*9880d681SAndroid Build Coastguard Worker unreachable 445*9880d681SAndroid Build Coastguard Worker 446*9880d681SAndroid Build Coastguard Workerbb215: ; preds = %bb211 447*9880d681SAndroid Build Coastguard Worker %tmp216 = add i64 undef, %tmp208 448*9880d681SAndroid Build Coastguard Worker %tmp217 = sub i64 %tmp209, undef 449*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb218, label %bb219 450*9880d681SAndroid Build Coastguard Worker 451*9880d681SAndroid Build Coastguard Workerbb218: ; preds = %bb215 452*9880d681SAndroid Build Coastguard Worker br label %bb219 453*9880d681SAndroid Build Coastguard Worker 454*9880d681SAndroid Build Coastguard Workerbb219: ; preds = %bb218, %bb215 455*9880d681SAndroid Build Coastguard Worker %tmp220 = trunc i64 %tmp217 to i32 456*9880d681SAndroid Build Coastguard Worker br label %bb221 457*9880d681SAndroid Build Coastguard Worker 458*9880d681SAndroid Build Coastguard Workerbb221: ; preds = %bb230, %bb219 459*9880d681SAndroid Build Coastguard Worker %tmp222 = phi i64 [ %tmp231, %bb230 ], [ 0, %bb219 ] 460*9880d681SAndroid Build Coastguard Worker %tmp223 = phi i32 [ %tmp232, %bb230 ], [ 0, %bb219 ] 461*9880d681SAndroid Build Coastguard Worker %tmp224 = trunc i64 %tmp222 to i32 462*9880d681SAndroid Build Coastguard Worker %tmp225 = icmp slt i32 %tmp224, %tmp220 463*9880d681SAndroid Build Coastguard Worker br i1 %tmp225, label %bb226, label %bb234 464*9880d681SAndroid Build Coastguard Worker 465*9880d681SAndroid Build Coastguard Workerbb226: ; preds = %bb221 466*9880d681SAndroid Build Coastguard Worker %tmp227 = add i64 %tmp222, %tmp216 467*9880d681SAndroid Build Coastguard Worker %tmp228 = getelementptr inbounds %struct.jim, %struct.jim* @global3, i64 0, i32 3, i64 %tmp227 468*9880d681SAndroid Build Coastguard Worker %tmp229 = load i8, i8* %tmp228, align 1 469*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb233, label %bb230 470*9880d681SAndroid Build Coastguard Worker 471*9880d681SAndroid Build Coastguard Workerbb230: ; preds = %bb226 472*9880d681SAndroid Build Coastguard Worker %tmp231 = add i64 %tmp222, 1 473*9880d681SAndroid Build Coastguard Worker %tmp232 = add nsw i32 %tmp223, 1 474*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb234, label %bb221 475*9880d681SAndroid Build Coastguard Worker 476*9880d681SAndroid Build Coastguard Workerbb233: ; preds = %bb226 477*9880d681SAndroid Build Coastguard Worker br i1 undef, label %bb235, label %bb234 478*9880d681SAndroid Build Coastguard Worker 479*9880d681SAndroid Build Coastguard Workerbb234: ; preds = %bb233, %bb230, %bb221 480*9880d681SAndroid Build Coastguard Worker br label %bb247 481*9880d681SAndroid Build Coastguard Worker 482*9880d681SAndroid Build Coastguard Workerbb235: ; preds = %bb233 483*9880d681SAndroid Build Coastguard Worker %tmp236 = add nsw i32 %tmp223, 1 484*9880d681SAndroid Build Coastguard Worker %tmp237 = sext i32 %tmp236 to i64 485*9880d681SAndroid Build Coastguard Worker %tmp238 = sub i64 %tmp217, %tmp237 486*9880d681SAndroid Build Coastguard Worker br i1 %tmp66, label %bb239, label %bb240 487*9880d681SAndroid Build Coastguard Worker 488*9880d681SAndroid Build Coastguard Workerbb239: ; preds = %bb235 489*9880d681SAndroid Build Coastguard Worker unreachable 490*9880d681SAndroid Build Coastguard Worker 491*9880d681SAndroid Build Coastguard Workerbb240: ; preds = %bb235 492*9880d681SAndroid Build Coastguard Worker switch i32 0, label %bb244 [ 493*9880d681SAndroid Build Coastguard Worker i32 0, label %bb241 494*9880d681SAndroid Build Coastguard Worker i32 1, label %bb241 495*9880d681SAndroid Build Coastguard Worker i32 4, label %bb241 496*9880d681SAndroid Build Coastguard Worker i32 6, label %bb241 497*9880d681SAndroid Build Coastguard Worker i32 9, label %bb241 498*9880d681SAndroid Build Coastguard Worker ] 499*9880d681SAndroid Build Coastguard Worker 500*9880d681SAndroid Build Coastguard Workerbb241: ; preds = %bb240, %bb240, %bb240, %bb240, %bb240 501*9880d681SAndroid Build Coastguard Worker %tmp242 = trunc i64 %tmp238 to i32 502*9880d681SAndroid Build Coastguard Worker %tmp243 = icmp slt i32 0, %tmp242 503*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb246, label %bb245 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Workerbb244: ; preds = %bb240 506*9880d681SAndroid Build Coastguard Worker unreachable 507*9880d681SAndroid Build Coastguard Worker 508*9880d681SAndroid Build Coastguard Workerbb245: ; preds = %bb241 509*9880d681SAndroid Build Coastguard Worker unreachable 510*9880d681SAndroid Build Coastguard Worker 511*9880d681SAndroid Build Coastguard Workerbb246: ; preds = %bb241 512*9880d681SAndroid Build Coastguard Worker unreachable 513*9880d681SAndroid Build Coastguard Worker 514*9880d681SAndroid Build Coastguard Workerbb247: ; preds = %bb234, %bb144, %bb106, %bb71, %bb58 515*9880d681SAndroid Build Coastguard Worker ret void 516*9880d681SAndroid Build Coastguard Worker} 517*9880d681SAndroid Build Coastguard Worker 518*9880d681SAndroid Build Coastguard Workerdeclare void @zot(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind 519