1*05c0afe8SRong Xusource_filename = "csfdo_bar.c" 2*05c0afe8SRong Xutarget datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 3*05c0afe8SRong Xutarget triple = "x86_64-unknown-linux-gnu" 4*05c0afe8SRong Xu 5*05c0afe8SRong Xu@odd = common dso_local local_unnamed_addr global i32 0, align 4 6*05c0afe8SRong Xu@even = common dso_local local_unnamed_addr global i32 0, align 4 7*05c0afe8SRong Xu@not_six = common dso_local local_unnamed_addr global i32 0, align 4 8*05c0afe8SRong Xu 9*05c0afe8SRong Xudefine void @bar(i32 %n) !prof !29 { 10*05c0afe8SRong Xuentry: 11*05c0afe8SRong Xu %call = tail call fastcc i32 @cond(i32 %n) 12*05c0afe8SRong Xu %tobool = icmp eq i32 %call, 0 13*05c0afe8SRong Xu br i1 %tobool, label %if.else, label %if.then, !prof !30 14*05c0afe8SRong Xu 15*05c0afe8SRong Xuif.then: 16*05c0afe8SRong Xu %0 = load i32, i32* @odd, align 4 17*05c0afe8SRong Xu %inc = add i32 %0, 1 18*05c0afe8SRong Xu store i32 %inc, i32* @odd, align 4 19*05c0afe8SRong Xu br label %for.inc 20*05c0afe8SRong Xu 21*05c0afe8SRong Xuif.else: 22*05c0afe8SRong Xu %1 = load i32, i32* @even, align 4 23*05c0afe8SRong Xu %inc1 = add i32 %1, 1 24*05c0afe8SRong Xu store i32 %inc1, i32* @even, align 4 25*05c0afe8SRong Xu br label %for.inc 26*05c0afe8SRong Xu 27*05c0afe8SRong Xufor.inc: 28*05c0afe8SRong Xu %rem.1 = srem i32 %n, 6 29*05c0afe8SRong Xu %tobool2.1 = icmp eq i32 %rem.1, 0 30*05c0afe8SRong Xu br i1 %tobool2.1, label %for.inc.1, label %if.then3.1, !prof !35 31*05c0afe8SRong Xu 32*05c0afe8SRong Xuif.then3.1: 33*05c0afe8SRong Xu %2 = load i32, i32* @not_six, align 4 34*05c0afe8SRong Xu %inc4.1 = add i32 %2, 1 35*05c0afe8SRong Xu store i32 %inc4.1, i32* @not_six, align 4 36*05c0afe8SRong Xu br label %for.inc.1 37*05c0afe8SRong Xu 38*05c0afe8SRong Xufor.inc.1: 39*05c0afe8SRong Xu %mul.2 = shl nsw i32 %n, 1 40*05c0afe8SRong Xu %rem.2 = srem i32 %mul.2, 6 41*05c0afe8SRong Xu %tobool2.2 = icmp eq i32 %rem.2, 0 42*05c0afe8SRong Xu br i1 %tobool2.2, label %for.inc.2, label %if.then3.2, !prof !35 43*05c0afe8SRong Xu 44*05c0afe8SRong Xuif.then3.2: 45*05c0afe8SRong Xu %3 = load i32, i32* @not_six, align 4 46*05c0afe8SRong Xu %inc4.2 = add i32 %3, 1 47*05c0afe8SRong Xu store i32 %inc4.2, i32* @not_six, align 4 48*05c0afe8SRong Xu br label %for.inc.2 49*05c0afe8SRong Xu 50*05c0afe8SRong Xufor.inc.2: 51*05c0afe8SRong Xu %mul.3 = mul nsw i32 %n, 3 52*05c0afe8SRong Xu %rem.3 = srem i32 %mul.3, 6 53*05c0afe8SRong Xu %tobool2.3 = icmp eq i32 %rem.3, 0 54*05c0afe8SRong Xu br i1 %tobool2.3, label %for.inc.3, label %if.then3.3, !prof !35 55*05c0afe8SRong Xu 56*05c0afe8SRong Xuif.then3.3: 57*05c0afe8SRong Xu %4 = load i32, i32* @not_six, align 4 58*05c0afe8SRong Xu %inc4.3 = add i32 %4, 1 59*05c0afe8SRong Xu store i32 %inc4.3, i32* @not_six, align 4 60*05c0afe8SRong Xu br label %for.inc.3 61*05c0afe8SRong Xu 62*05c0afe8SRong Xufor.inc.3: 63*05c0afe8SRong Xu ret void 64*05c0afe8SRong Xu} 65*05c0afe8SRong Xu 66*05c0afe8SRong Xudefine internal fastcc i32 @cond(i32 %i) #1 !prof !29 !PGOFuncName !36 { 67*05c0afe8SRong Xuentry: 68*05c0afe8SRong Xu %rem = srem i32 %i, 2 69*05c0afe8SRong Xu ret i32 %rem 70*05c0afe8SRong Xu} 71*05c0afe8SRong Xu 72*05c0afe8SRong Xuattributes #1 = { inlinehint noinline } 73*05c0afe8SRong Xu 74*05c0afe8SRong Xu!llvm.module.flags = !{!0, !1} 75*05c0afe8SRong Xu 76*05c0afe8SRong Xu!0 = !{i32 1, !"wchar_size", i32 4} 77*05c0afe8SRong Xu!1 = !{i32 1, !"ProfileSummary", !2} 78*05c0afe8SRong Xu!2 = !{!3, !4, !5, !6, !7, !8, !9, !10} 79*05c0afe8SRong Xu!3 = !{!"ProfileFormat", !"InstrProf"} 80*05c0afe8SRong Xu!4 = !{!"TotalCount", i64 1700001} 81*05c0afe8SRong Xu!5 = !{!"MaxCount", i64 800000} 82*05c0afe8SRong Xu!6 = !{!"MaxInternalCount", i64 399999} 83*05c0afe8SRong Xu!7 = !{!"MaxFunctionCount", i64 800000} 84*05c0afe8SRong Xu!8 = !{!"NumCounts", i64 8} 85*05c0afe8SRong Xu!9 = !{!"NumFunctions", i64 4} 86*05c0afe8SRong Xu!10 = !{!"DetailedSummary", !11} 87*05c0afe8SRong Xu!11 = !{!12, !13, !14, !15, !16, !17, !18, !19, !20, !21, !22, !23, !24, !25, !26, !27} 88*05c0afe8SRong Xu!12 = !{i32 10000, i64 800000, i32 1} 89*05c0afe8SRong Xu!13 = !{i32 100000, i64 800000, i32 1} 90*05c0afe8SRong Xu!14 = !{i32 200000, i64 800000, i32 1} 91*05c0afe8SRong Xu!15 = !{i32 300000, i64 800000, i32 1} 92*05c0afe8SRong Xu!16 = !{i32 400000, i64 800000, i32 1} 93*05c0afe8SRong Xu!17 = !{i32 500000, i64 399999, i32 2} 94*05c0afe8SRong Xu!18 = !{i32 600000, i64 399999, i32 2} 95*05c0afe8SRong Xu!19 = !{i32 700000, i64 399999, i32 2} 96*05c0afe8SRong Xu!20 = !{i32 800000, i64 200000, i32 3} 97*05c0afe8SRong Xu!21 = !{i32 900000, i64 100000, i32 6} 98*05c0afe8SRong Xu!22 = !{i32 950000, i64 100000, i32 6} 99*05c0afe8SRong Xu!23 = !{i32 990000, i64 100000, i32 6} 100*05c0afe8SRong Xu!24 = !{i32 999000, i64 100000, i32 6} 101*05c0afe8SRong Xu!25 = !{i32 999900, i64 100000, i32 6} 102*05c0afe8SRong Xu!26 = !{i32 999990, i64 100000, i32 6} 103*05c0afe8SRong Xu!27 = !{i32 999999, i64 100000, i32 6} 104*05c0afe8SRong Xu!29 = !{!"function_entry_count", i64 200000} 105*05c0afe8SRong Xu!30 = !{!"branch_weights", i32 100000, i32 100000} 106*05c0afe8SRong Xu!31 = !{!32, !32, i64 0} 107*05c0afe8SRong Xu!32 = !{!"int", !33, i64 0} 108*05c0afe8SRong Xu!33 = !{!"omnipotent char", !34, i64 0} 109*05c0afe8SRong Xu!34 = !{!"Simple C/C++ TBAA"} 110*05c0afe8SRong Xu!35 = !{!"branch_weights", i32 400001, i32 399999} 111*05c0afe8SRong Xu!36 = !{!"csfdo_bar.c:cond"} 112