1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-macosx -regalloc=greedy | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; This testing case is reduced from 197.parser prune_match function. 4*9880d681SAndroid Build Coastguard Worker; We make sure register copies are not generated on isupper.exit blocks. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK: isupper.exit 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: in Loop 8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testl 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jne 10*9880d681SAndroid Build Coastguard Worker; CHECK: isupper.exit 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: in Loop 12*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: testl 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: je 14*9880d681SAndroid Build Coastguard Worker; CHECK: maskrune 15*9880d681SAndroid Build Coastguard Worker; CHECK: maskrune 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker%struct.List_o_links_struct = type { i32, i32, i32, %struct.List_o_links_struct* } 18*9880d681SAndroid Build Coastguard Worker%struct.Connector_struct = type { i16, i16, i8, i8, %struct.Connector_struct*, i8* } 19*9880d681SAndroid Build Coastguard Worker%struct._RuneLocale = type { [8 x i8], [32 x i8], i32 (i8*, i64, i8**)*, i32 (i32, i8*, i64, i8**)*, i32, [256 x i32], [256 x i32], [256 x i32], %struct._RuneRange, %struct._RuneRange, %struct._RuneRange, i8*, i32, i32, %struct._RuneCharClass* } 20*9880d681SAndroid Build Coastguard Worker%struct._RuneRange = type { i32, %struct._RuneEntry* } 21*9880d681SAndroid Build Coastguard Worker%struct._RuneEntry = type { i32, i32, i32, i32* } 22*9880d681SAndroid Build Coastguard Worker%struct._RuneCharClass = type { [14 x i8], i32 } 23*9880d681SAndroid Build Coastguard Worker%struct.Exp_struct = type { i8, i8, i8, i8, %union.anon } 24*9880d681SAndroid Build Coastguard Worker%union.anon = type { %struct.E_list_struct* } 25*9880d681SAndroid Build Coastguard Worker%struct.E_list_struct = type { %struct.E_list_struct*, %struct.Exp_struct* } 26*9880d681SAndroid Build Coastguard Worker%struct.domain_struct = type { i8*, i32, %struct.List_o_links_struct*, i32, i32, %struct.d_tree_leaf_struct*, %struct.domain_struct* } 27*9880d681SAndroid Build Coastguard Worker%struct.d_tree_leaf_struct = type { %struct.domain_struct*, i32, %struct.d_tree_leaf_struct* } 28*9880d681SAndroid Build Coastguard Worker@_DefaultRuneLocale = external global %struct._RuneLocale 29*9880d681SAndroid Build Coastguard Workerdeclare i32 @__maskrune(i32, i64) #7 30*9880d681SAndroid Build Coastguard Workerdefine fastcc i32 @prune_match(%struct.Connector_struct* nocapture readonly %a, %struct.Connector_struct* nocapture readonly %b) #9 { 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %label56 = bitcast %struct.Connector_struct* %a to i16* 33*9880d681SAndroid Build Coastguard Worker %0 = load i16, i16* %label56, align 2 34*9880d681SAndroid Build Coastguard Worker %label157 = bitcast %struct.Connector_struct* %b to i16* 35*9880d681SAndroid Build Coastguard Worker %1 = load i16, i16* %label157, align 2 36*9880d681SAndroid Build Coastguard Worker %cmp = icmp eq i16 %0, %1 37*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.end, label %return, !prof !988 38*9880d681SAndroid Build Coastguard Workerif.end: 39*9880d681SAndroid Build Coastguard Worker %priority = getelementptr inbounds %struct.Connector_struct, %struct.Connector_struct* %a, i64 0, i32 2 40*9880d681SAndroid Build Coastguard Worker %2 = load i8, i8* %priority, align 1 41*9880d681SAndroid Build Coastguard Worker %priority5 = getelementptr inbounds %struct.Connector_struct, %struct.Connector_struct* %b, i64 0, i32 2 42*9880d681SAndroid Build Coastguard Worker %3 = load i8, i8* %priority5, align 1 43*9880d681SAndroid Build Coastguard Worker %string = getelementptr inbounds %struct.Connector_struct, %struct.Connector_struct* %a, i64 0, i32 5 44*9880d681SAndroid Build Coastguard Worker %4 = load i8*, i8** %string, align 8 45*9880d681SAndroid Build Coastguard Worker %string7 = getelementptr inbounds %struct.Connector_struct, %struct.Connector_struct* %b, i64 0, i32 5 46*9880d681SAndroid Build Coastguard Worker %5 = load i8*, i8** %string7, align 8 47*9880d681SAndroid Build Coastguard Worker br label %while.cond 48*9880d681SAndroid Build Coastguard Workerwhile.cond: 49*9880d681SAndroid Build Coastguard Worker %lsr.iv27 = phi i64 [ %lsr.iv.next28, %if.end17 ], [ 0, %if.end ] 50*9880d681SAndroid Build Coastguard Worker %scevgep55 = getelementptr i8, i8* %4, i64 %lsr.iv27 51*9880d681SAndroid Build Coastguard Worker %6 = load i8, i8* %scevgep55, align 1 52*9880d681SAndroid Build Coastguard Worker %idxprom.i.i = sext i8 %6 to i64 53*9880d681SAndroid Build Coastguard Worker %isascii.i.i224 = icmp sgt i8 %6, -1 54*9880d681SAndroid Build Coastguard Worker br i1 %isascii.i.i224, label %cond.true.i.i, label %cond.false.i.i, !prof !181 55*9880d681SAndroid Build Coastguard Workercond.true.i.i: 56*9880d681SAndroid Build Coastguard Worker %arrayidx.i.i = getelementptr inbounds %struct._RuneLocale, %struct._RuneLocale* @_DefaultRuneLocale, i64 0, i32 5, i64 %idxprom.i.i 57*9880d681SAndroid Build Coastguard Worker %7 = load i32, i32* %arrayidx.i.i, align 4 58*9880d681SAndroid Build Coastguard Worker %and.i.i = and i32 %7, 32768 59*9880d681SAndroid Build Coastguard Worker br label %isupper.exit 60*9880d681SAndroid Build Coastguard Workercond.false.i.i: 61*9880d681SAndroid Build Coastguard Worker %8 = trunc i64 %idxprom.i.i to i8 62*9880d681SAndroid Build Coastguard Worker %conv8 = sext i8 %8 to i32 63*9880d681SAndroid Build Coastguard Worker %call3.i.i = tail call i32 @__maskrune(i32 %conv8, i64 32768) #3 64*9880d681SAndroid Build Coastguard Worker br label %isupper.exit 65*9880d681SAndroid Build Coastguard Workerisupper.exit: 66*9880d681SAndroid Build Coastguard Worker %tobool1.sink.i.in.i = phi i32 [ %and.i.i, %cond.true.i.i ], [ %call3.i.i, %cond.false.i.i ] 67*9880d681SAndroid Build Coastguard Worker %tobool1.sink.i.i = icmp eq i32 %tobool1.sink.i.in.i, 0 68*9880d681SAndroid Build Coastguard Worker br i1 %tobool1.sink.i.i, label %lor.rhs, label %while.body, !prof !989 69*9880d681SAndroid Build Coastguard Workerlor.rhs: 70*9880d681SAndroid Build Coastguard Worker %sunkaddr = ptrtoint i8* %5 to i64 71*9880d681SAndroid Build Coastguard Worker %sunkaddr58 = add i64 %sunkaddr, %lsr.iv27 72*9880d681SAndroid Build Coastguard Worker %sunkaddr59 = inttoptr i64 %sunkaddr58 to i8* 73*9880d681SAndroid Build Coastguard Worker %9 = load i8, i8* %sunkaddr59, align 1 74*9880d681SAndroid Build Coastguard Worker %idxprom.i.i214 = sext i8 %9 to i64 75*9880d681SAndroid Build Coastguard Worker %isascii.i.i213225 = icmp sgt i8 %9, -1 76*9880d681SAndroid Build Coastguard Worker br i1 %isascii.i.i213225, label %cond.true.i.i217, label %cond.false.i.i219, !prof !181 77*9880d681SAndroid Build Coastguard Workercond.true.i.i217: 78*9880d681SAndroid Build Coastguard Worker %arrayidx.i.i215 = getelementptr inbounds %struct._RuneLocale, %struct._RuneLocale* @_DefaultRuneLocale, i64 0, i32 5, i64 %idxprom.i.i214 79*9880d681SAndroid Build Coastguard Worker %10 = load i32, i32* %arrayidx.i.i215, align 4 80*9880d681SAndroid Build Coastguard Worker %and.i.i216 = and i32 %10, 32768 81*9880d681SAndroid Build Coastguard Worker br label %isupper.exit223 82*9880d681SAndroid Build Coastguard Workercond.false.i.i219: 83*9880d681SAndroid Build Coastguard Worker %11 = trunc i64 %idxprom.i.i214 to i8 84*9880d681SAndroid Build Coastguard Worker %conv9 = sext i8 %11 to i32 85*9880d681SAndroid Build Coastguard Worker %call3.i.i218 = tail call i32 @__maskrune(i32 %conv9, i64 32768) #3 86*9880d681SAndroid Build Coastguard Worker br label %isupper.exit223 87*9880d681SAndroid Build Coastguard Workerisupper.exit223: 88*9880d681SAndroid Build Coastguard Worker %tobool1.sink.i.in.i220 = phi i32 [ %and.i.i216, %cond.true.i.i217 ], [ %call3.i.i218, %cond.false.i.i219 ] 89*9880d681SAndroid Build Coastguard Worker %tobool1.sink.i.i221 = icmp eq i32 %tobool1.sink.i.in.i220, 0 90*9880d681SAndroid Build Coastguard Worker br i1 %tobool1.sink.i.i221, label %while.end, label %while.body, !prof !990 91*9880d681SAndroid Build Coastguard Workerwhile.body: 92*9880d681SAndroid Build Coastguard Worker %sunkaddr60 = ptrtoint i8* %4 to i64 93*9880d681SAndroid Build Coastguard Worker %sunkaddr61 = add i64 %sunkaddr60, %lsr.iv27 94*9880d681SAndroid Build Coastguard Worker %sunkaddr62 = inttoptr i64 %sunkaddr61 to i8* 95*9880d681SAndroid Build Coastguard Worker %12 = load i8, i8* %sunkaddr62, align 1 96*9880d681SAndroid Build Coastguard Worker %sunkaddr63 = ptrtoint i8* %5 to i64 97*9880d681SAndroid Build Coastguard Worker %sunkaddr64 = add i64 %sunkaddr63, %lsr.iv27 98*9880d681SAndroid Build Coastguard Worker %sunkaddr65 = inttoptr i64 %sunkaddr64 to i8* 99*9880d681SAndroid Build Coastguard Worker %13 = load i8, i8* %sunkaddr65, align 1 100*9880d681SAndroid Build Coastguard Worker %cmp14 = icmp eq i8 %12, %13 101*9880d681SAndroid Build Coastguard Worker br i1 %cmp14, label %if.end17, label %return, !prof !991 102*9880d681SAndroid Build Coastguard Workerif.end17: 103*9880d681SAndroid Build Coastguard Worker %lsr.iv.next28 = add i64 %lsr.iv27, 1 104*9880d681SAndroid Build Coastguard Worker br label %while.cond 105*9880d681SAndroid Build Coastguard Workerwhile.end: 106*9880d681SAndroid Build Coastguard Worker %14 = or i8 %3, %2 107*9880d681SAndroid Build Coastguard Worker %15 = icmp eq i8 %14, 0 108*9880d681SAndroid Build Coastguard Worker br i1 %15, label %if.then23, label %if.else88, !prof !992 109*9880d681SAndroid Build Coastguard Workerif.then23: 110*9880d681SAndroid Build Coastguard Worker %sunkaddr66 = ptrtoint %struct.Connector_struct* %a to i64 111*9880d681SAndroid Build Coastguard Worker %sunkaddr67 = add i64 %sunkaddr66, 16 112*9880d681SAndroid Build Coastguard Worker %sunkaddr68 = inttoptr i64 %sunkaddr67 to i8** 113*9880d681SAndroid Build Coastguard Worker %16 = load i8*, i8** %sunkaddr68, align 8 114*9880d681SAndroid Build Coastguard Worker %17 = load i8, i8* %16, align 1 115*9880d681SAndroid Build Coastguard Worker %cmp26 = icmp eq i8 %17, 83 116*9880d681SAndroid Build Coastguard Worker %sunkaddr69 = ptrtoint i8* %4 to i64 117*9880d681SAndroid Build Coastguard Worker %sunkaddr70 = add i64 %sunkaddr69, %lsr.iv27 118*9880d681SAndroid Build Coastguard Worker %sunkaddr71 = inttoptr i64 %sunkaddr70 to i8* 119*9880d681SAndroid Build Coastguard Worker %18 = load i8, i8* %sunkaddr71, align 1 120*9880d681SAndroid Build Coastguard Worker br i1 %cmp26, label %land.lhs.true28, label %while.cond59.preheader, !prof !993 121*9880d681SAndroid Build Coastguard Workerland.lhs.true28: 122*9880d681SAndroid Build Coastguard Worker switch i8 %18, label %land.rhs.preheader [ 123*9880d681SAndroid Build Coastguard Worker i8 112, label %land.lhs.true35 124*9880d681SAndroid Build Coastguard Worker i8 0, label %return 125*9880d681SAndroid Build Coastguard Worker ], !prof !994 126*9880d681SAndroid Build Coastguard Workerland.lhs.true35: 127*9880d681SAndroid Build Coastguard Worker %sunkaddr72 = ptrtoint i8* %5 to i64 128*9880d681SAndroid Build Coastguard Worker %sunkaddr73 = add i64 %sunkaddr72, %lsr.iv27 129*9880d681SAndroid Build Coastguard Worker %sunkaddr74 = inttoptr i64 %sunkaddr73 to i8* 130*9880d681SAndroid Build Coastguard Worker %19 = load i8, i8* %sunkaddr74, align 1 131*9880d681SAndroid Build Coastguard Worker switch i8 %19, label %land.rhs.preheader [ 132*9880d681SAndroid Build Coastguard Worker i8 112, label %land.lhs.true43 133*9880d681SAndroid Build Coastguard Worker ], !prof !995 134*9880d681SAndroid Build Coastguard Workerland.lhs.true43: 135*9880d681SAndroid Build Coastguard Worker %20 = ptrtoint i8* %16 to i64 136*9880d681SAndroid Build Coastguard Worker %21 = sub i64 0, %20 137*9880d681SAndroid Build Coastguard Worker %scevgep52 = getelementptr i8, i8* %4, i64 %21 138*9880d681SAndroid Build Coastguard Worker %scevgep53 = getelementptr i8, i8* %scevgep52, i64 %lsr.iv27 139*9880d681SAndroid Build Coastguard Worker %scevgep54 = getelementptr i8, i8* %scevgep53, i64 -1 140*9880d681SAndroid Build Coastguard Worker %cmp45 = icmp eq i8* %scevgep54, null 141*9880d681SAndroid Build Coastguard Worker br i1 %cmp45, label %return, label %lor.lhs.false47, !prof !996 142*9880d681SAndroid Build Coastguard Workerlor.lhs.false47: 143*9880d681SAndroid Build Coastguard Worker %22 = ptrtoint i8* %16 to i64 144*9880d681SAndroid Build Coastguard Worker %23 = sub i64 0, %22 145*9880d681SAndroid Build Coastguard Worker %scevgep47 = getelementptr i8, i8* %4, i64 %23 146*9880d681SAndroid Build Coastguard Worker %scevgep48 = getelementptr i8, i8* %scevgep47, i64 %lsr.iv27 147*9880d681SAndroid Build Coastguard Worker %scevgep49 = getelementptr i8, i8* %scevgep48, i64 -2 148*9880d681SAndroid Build Coastguard Worker %cmp50 = icmp eq i8* %scevgep49, null 149*9880d681SAndroid Build Coastguard Worker br i1 %cmp50, label %land.lhs.true52, label %while.cond59.preheader, !prof !997 150*9880d681SAndroid Build Coastguard Workerland.lhs.true52: 151*9880d681SAndroid Build Coastguard Worker %sunkaddr75 = ptrtoint i8* %4 to i64 152*9880d681SAndroid Build Coastguard Worker %sunkaddr76 = add i64 %sunkaddr75, %lsr.iv27 153*9880d681SAndroid Build Coastguard Worker %sunkaddr77 = add i64 %sunkaddr76, -1 154*9880d681SAndroid Build Coastguard Worker %sunkaddr78 = inttoptr i64 %sunkaddr77 to i8* 155*9880d681SAndroid Build Coastguard Worker %24 = load i8, i8* %sunkaddr78, align 1 156*9880d681SAndroid Build Coastguard Worker %cmp55 = icmp eq i8 %24, 73 157*9880d681SAndroid Build Coastguard Worker %cmp61233 = icmp eq i8 %18, 0 158*9880d681SAndroid Build Coastguard Worker %or.cond265 = or i1 %cmp55, %cmp61233 159*9880d681SAndroid Build Coastguard Worker br i1 %or.cond265, label %return, label %land.rhs.preheader, !prof !998 160*9880d681SAndroid Build Coastguard Workerwhile.cond59.preheader: 161*9880d681SAndroid Build Coastguard Worker %cmp61233.old = icmp eq i8 %18, 0 162*9880d681SAndroid Build Coastguard Worker br i1 %cmp61233.old, label %return, label %land.rhs.preheader, !prof !999 163*9880d681SAndroid Build Coastguard Workerland.rhs.preheader: 164*9880d681SAndroid Build Coastguard Worker %scevgep33 = getelementptr i8, i8* %5, i64 %lsr.iv27 165*9880d681SAndroid Build Coastguard Worker %scevgep43 = getelementptr i8, i8* %4, i64 %lsr.iv27 166*9880d681SAndroid Build Coastguard Worker br label %land.rhs 167*9880d681SAndroid Build Coastguard Workerland.rhs: 168*9880d681SAndroid Build Coastguard Worker %lsr.iv = phi i64 [ 0, %land.rhs.preheader ], [ %lsr.iv.next, %if.then83 ] 169*9880d681SAndroid Build Coastguard Worker %25 = phi i8 [ %27, %if.then83 ], [ %18, %land.rhs.preheader ] 170*9880d681SAndroid Build Coastguard Worker %scevgep34 = getelementptr i8, i8* %scevgep33, i64 %lsr.iv 171*9880d681SAndroid Build Coastguard Worker %26 = load i8, i8* %scevgep34, align 1 172*9880d681SAndroid Build Coastguard Worker %cmp64 = icmp eq i8 %26, 0 173*9880d681SAndroid Build Coastguard Worker br i1 %cmp64, label %return, label %while.body66, !prof !1000 174*9880d681SAndroid Build Coastguard Workerwhile.body66: 175*9880d681SAndroid Build Coastguard Worker %cmp68 = icmp eq i8 %25, 42 176*9880d681SAndroid Build Coastguard Worker %cmp72 = icmp eq i8 %26, 42 177*9880d681SAndroid Build Coastguard Worker %or.cond = or i1 %cmp68, %cmp72 178*9880d681SAndroid Build Coastguard Worker br i1 %or.cond, label %if.then83, label %lor.lhs.false74, !prof !1001 179*9880d681SAndroid Build Coastguard Workerlor.lhs.false74: 180*9880d681SAndroid Build Coastguard Worker %cmp77 = icmp ne i8 %25, %26 181*9880d681SAndroid Build Coastguard Worker %cmp81 = icmp eq i8 %25, 94 182*9880d681SAndroid Build Coastguard Worker %or.cond208 = or i1 %cmp77, %cmp81 183*9880d681SAndroid Build Coastguard Worker br i1 %or.cond208, label %return, label %if.then83, !prof !1002 184*9880d681SAndroid Build Coastguard Workerif.then83: 185*9880d681SAndroid Build Coastguard Worker %scevgep44 = getelementptr i8, i8* %scevgep43, i64 %lsr.iv 186*9880d681SAndroid Build Coastguard Worker %scevgep45 = getelementptr i8, i8* %scevgep44, i64 1 187*9880d681SAndroid Build Coastguard Worker %27 = load i8, i8* %scevgep45, align 1 188*9880d681SAndroid Build Coastguard Worker %cmp61 = icmp eq i8 %27, 0 189*9880d681SAndroid Build Coastguard Worker %lsr.iv.next = add i64 %lsr.iv, 1 190*9880d681SAndroid Build Coastguard Worker br i1 %cmp61, label %return, label %land.rhs, !prof !999 191*9880d681SAndroid Build Coastguard Workerif.else88: 192*9880d681SAndroid Build Coastguard Worker %cmp89 = icmp eq i8 %2, 1 193*9880d681SAndroid Build Coastguard Worker %cmp92 = icmp eq i8 %3, 2 194*9880d681SAndroid Build Coastguard Worker %or.cond159 = and i1 %cmp89, %cmp92 195*9880d681SAndroid Build Coastguard Worker br i1 %or.cond159, label %while.cond95.preheader, label %if.else123, !prof !1003 196*9880d681SAndroid Build Coastguard Workerwhile.cond95.preheader: 197*9880d681SAndroid Build Coastguard Worker %sunkaddr79 = ptrtoint i8* %4 to i64 198*9880d681SAndroid Build Coastguard Worker %sunkaddr80 = add i64 %sunkaddr79, %lsr.iv27 199*9880d681SAndroid Build Coastguard Worker %sunkaddr81 = inttoptr i64 %sunkaddr80 to i8* 200*9880d681SAndroid Build Coastguard Worker %28 = load i8, i8* %sunkaddr81, align 1 201*9880d681SAndroid Build Coastguard Worker %cmp97238 = icmp eq i8 %28, 0 202*9880d681SAndroid Build Coastguard Worker br i1 %cmp97238, label %return, label %land.rhs99.preheader, !prof !1004 203*9880d681SAndroid Build Coastguard Workerland.rhs99.preheader: 204*9880d681SAndroid Build Coastguard Worker %scevgep31 = getelementptr i8, i8* %5, i64 %lsr.iv27 205*9880d681SAndroid Build Coastguard Worker %scevgep40 = getelementptr i8, i8* %4, i64 %lsr.iv27 206*9880d681SAndroid Build Coastguard Worker br label %land.rhs99 207*9880d681SAndroid Build Coastguard Workerland.rhs99: 208*9880d681SAndroid Build Coastguard Worker %lsr.iv17 = phi i64 [ 0, %land.rhs99.preheader ], [ %lsr.iv.next18, %if.then117 ] 209*9880d681SAndroid Build Coastguard Worker %29 = phi i8 [ %31, %if.then117 ], [ %28, %land.rhs99.preheader ] 210*9880d681SAndroid Build Coastguard Worker %scevgep32 = getelementptr i8, i8* %scevgep31, i64 %lsr.iv17 211*9880d681SAndroid Build Coastguard Worker %30 = load i8, i8* %scevgep32, align 1 212*9880d681SAndroid Build Coastguard Worker %cmp101 = icmp eq i8 %30, 0 213*9880d681SAndroid Build Coastguard Worker br i1 %cmp101, label %return, label %while.body104, !prof !1005 214*9880d681SAndroid Build Coastguard Workerwhile.body104: 215*9880d681SAndroid Build Coastguard Worker %cmp107 = icmp eq i8 %29, %30 216*9880d681SAndroid Build Coastguard Worker %cmp111 = icmp eq i8 %29, 42 217*9880d681SAndroid Build Coastguard Worker %or.cond209 = or i1 %cmp107, %cmp111 218*9880d681SAndroid Build Coastguard Worker %cmp115 = icmp eq i8 %30, 94 219*9880d681SAndroid Build Coastguard Worker %or.cond210 = or i1 %or.cond209, %cmp115 220*9880d681SAndroid Build Coastguard Worker br i1 %or.cond210, label %if.then117, label %return, !prof !1006 221*9880d681SAndroid Build Coastguard Workerif.then117: 222*9880d681SAndroid Build Coastguard Worker %scevgep41 = getelementptr i8, i8* %scevgep40, i64 %lsr.iv17 223*9880d681SAndroid Build Coastguard Worker %scevgep42 = getelementptr i8, i8* %scevgep41, i64 1 224*9880d681SAndroid Build Coastguard Worker %31 = load i8, i8* %scevgep42, align 1 225*9880d681SAndroid Build Coastguard Worker %cmp97 = icmp eq i8 %31, 0 226*9880d681SAndroid Build Coastguard Worker %lsr.iv.next18 = add i64 %lsr.iv17, 1 227*9880d681SAndroid Build Coastguard Worker br i1 %cmp97, label %return, label %land.rhs99, !prof !1004 228*9880d681SAndroid Build Coastguard Workerif.else123: 229*9880d681SAndroid Build Coastguard Worker %cmp124 = icmp eq i8 %3, 1 230*9880d681SAndroid Build Coastguard Worker %cmp127 = icmp eq i8 %2, 2 231*9880d681SAndroid Build Coastguard Worker %or.cond160 = and i1 %cmp124, %cmp127 232*9880d681SAndroid Build Coastguard Worker br i1 %or.cond160, label %while.cond130.preheader, label %return, !prof !1007 233*9880d681SAndroid Build Coastguard Workerwhile.cond130.preheader: 234*9880d681SAndroid Build Coastguard Worker %sunkaddr82 = ptrtoint i8* %4 to i64 235*9880d681SAndroid Build Coastguard Worker %sunkaddr83 = add i64 %sunkaddr82, %lsr.iv27 236*9880d681SAndroid Build Coastguard Worker %sunkaddr84 = inttoptr i64 %sunkaddr83 to i8* 237*9880d681SAndroid Build Coastguard Worker %32 = load i8, i8* %sunkaddr84, align 1 238*9880d681SAndroid Build Coastguard Worker %cmp132244 = icmp eq i8 %32, 0 239*9880d681SAndroid Build Coastguard Worker br i1 %cmp132244, label %return, label %land.rhs134.preheader, !prof !1008 240*9880d681SAndroid Build Coastguard Workerland.rhs134.preheader: 241*9880d681SAndroid Build Coastguard Worker %scevgep29 = getelementptr i8, i8* %5, i64 %lsr.iv27 242*9880d681SAndroid Build Coastguard Worker %scevgep37 = getelementptr i8, i8* %4, i64 %lsr.iv27 243*9880d681SAndroid Build Coastguard Worker br label %land.rhs134 244*9880d681SAndroid Build Coastguard Workerland.rhs134: 245*9880d681SAndroid Build Coastguard Worker %lsr.iv22 = phi i64 [ 0, %land.rhs134.preheader ], [ %lsr.iv.next23, %if.then152 ] 246*9880d681SAndroid Build Coastguard Worker %33 = phi i8 [ %35, %if.then152 ], [ %32, %land.rhs134.preheader ] 247*9880d681SAndroid Build Coastguard Worker %scevgep30 = getelementptr i8, i8* %scevgep29, i64 %lsr.iv22 248*9880d681SAndroid Build Coastguard Worker %34 = load i8, i8* %scevgep30, align 1 249*9880d681SAndroid Build Coastguard Worker %cmp136 = icmp eq i8 %34, 0 250*9880d681SAndroid Build Coastguard Worker br i1 %cmp136, label %return, label %while.body139, !prof !1009 251*9880d681SAndroid Build Coastguard Workerwhile.body139: 252*9880d681SAndroid Build Coastguard Worker %cmp142 = icmp eq i8 %33, %34 253*9880d681SAndroid Build Coastguard Worker %cmp146 = icmp eq i8 %34, 42 254*9880d681SAndroid Build Coastguard Worker %or.cond211 = or i1 %cmp142, %cmp146 255*9880d681SAndroid Build Coastguard Worker %cmp150 = icmp eq i8 %33, 94 256*9880d681SAndroid Build Coastguard Worker %or.cond212 = or i1 %or.cond211, %cmp150 257*9880d681SAndroid Build Coastguard Worker br i1 %or.cond212, label %if.then152, label %return, !prof !1010 258*9880d681SAndroid Build Coastguard Workerif.then152: 259*9880d681SAndroid Build Coastguard Worker %scevgep38 = getelementptr i8, i8* %scevgep37, i64 %lsr.iv22 260*9880d681SAndroid Build Coastguard Worker %scevgep39 = getelementptr i8, i8* %scevgep38, i64 1 261*9880d681SAndroid Build Coastguard Worker %35 = load i8, i8* %scevgep39, align 1 262*9880d681SAndroid Build Coastguard Worker %cmp132 = icmp eq i8 %35, 0 263*9880d681SAndroid Build Coastguard Worker %lsr.iv.next23 = add i64 %lsr.iv22, 1 264*9880d681SAndroid Build Coastguard Worker br i1 %cmp132, label %return, label %land.rhs134, !prof !1008 265*9880d681SAndroid Build Coastguard Workerreturn: 266*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ 0, %entry ], [ 1, %land.lhs.true52 ], [ 1, %land.lhs.true43 ], [ 0, %if.else123 ], [ 1, %while.cond59.preheader ], [ 1, %while.cond95.preheader ], [ 1, %while.cond130.preheader ], [ 1, %land.lhs.true28 ], [ 1, %if.then83 ], [ 0, %lor.lhs.false74 ], [ 1, %land.rhs ], [ 1, %if.then117 ], [ 0, %while.body104 ], [ 1, %land.rhs99 ], [ 1, %if.then152 ], [ 0, %while.body139 ], [ 1, %land.rhs134 ], [ 0, %while.body ] 267*9880d681SAndroid Build Coastguard Worker ret i32 %retval.0 268*9880d681SAndroid Build Coastguard Worker} 269*9880d681SAndroid Build Coastguard Worker!181 = !{!"branch_weights", i32 662038, i32 1} 270*9880d681SAndroid Build Coastguard Worker!988 = !{!"branch_weights", i32 12091450, i32 1916} 271*9880d681SAndroid Build Coastguard Worker!989 = !{!"branch_weights", i32 7564670, i32 4526781} 272*9880d681SAndroid Build Coastguard Worker!990 = !{!"branch_weights", i32 7484958, i32 13283499} 273*9880d681SAndroid Build Coastguard Worker!991 = !{!"branch_weights", i32 8677007, i32 4606493} 274*9880d681SAndroid Build Coastguard Worker!992 = !{!"branch_weights", i32 -1172426948, i32 145094705} 275*9880d681SAndroid Build Coastguard Worker!993 = !{!"branch_weights", i32 1468914, i32 5683688} 276*9880d681SAndroid Build Coastguard Worker!994 = !{!"branch_weights", i32 114025221, i32 -1217548794, i32 -1199521551, i32 87712616} 277*9880d681SAndroid Build Coastguard Worker!995 = !{!"branch_weights", i32 1853716452, i32 -444717951, i32 932776759} 278*9880d681SAndroid Build Coastguard Worker!996 = !{!"branch_weights", i32 1004870, i32 20259} 279*9880d681SAndroid Build Coastguard Worker!997 = !{!"branch_weights", i32 20071, i32 189} 280*9880d681SAndroid Build Coastguard Worker!998 = !{!"branch_weights", i32 -1020255939, i32 572177766} 281*9880d681SAndroid Build Coastguard Worker!999 = !{!"branch_weights", i32 2666513, i32 3466431} 282*9880d681SAndroid Build Coastguard Worker!1000 = !{!"branch_weights", i32 5117635, i32 1859780} 283*9880d681SAndroid Build Coastguard Worker!1001 = !{!"branch_weights", i32 354902465, i32 -1444604407} 284*9880d681SAndroid Build Coastguard Worker!1002 = !{!"branch_weights", i32 -1762419279, i32 1592770684} 285*9880d681SAndroid Build Coastguard Worker!1003 = !{!"branch_weights", i32 1435905930, i32 -1951930624} 286*9880d681SAndroid Build Coastguard Worker!1004 = !{!"branch_weights", i32 1, i32 504888} 287*9880d681SAndroid Build Coastguard Worker!1005 = !{!"branch_weights", i32 94662, i32 504888} 288*9880d681SAndroid Build Coastguard Worker!1006 = !{!"branch_weights", i32 -1897793104, i32 160196332} 289*9880d681SAndroid Build Coastguard Worker!1007 = !{!"branch_weights", i32 2074643678, i32 -29579071} 290*9880d681SAndroid Build Coastguard Worker!1008 = !{!"branch_weights", i32 1, i32 226163} 291*9880d681SAndroid Build Coastguard Worker!1009 = !{!"branch_weights", i32 58357, i32 226163} 292*9880d681SAndroid Build Coastguard Worker!1010 = !{!"branch_weights", i32 -2072848646, i32 92907517} 293