xref: /llvm-project/llvm/test/Transforms/SampleProfile/pseudo-probe-icp-factor.ll (revision 0d2271bb446d1a8cc7cbfbcd28827c305916d8ec)
16d5132b4Swlei; RUN: opt < %s -passes=sample-profile -sample-profile-file=%S/Inputs/pseudo-probe-icp-factor.prof -S -sample-profile-prioritized-inline=1 2>&1 | FileCheck %s
26d5132b4Swlei
36d5132b4Swleitarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
46d5132b4Swleitarget triple = "x86_64-unknown-linux-gnu"
56d5132b4Swlei
66d5132b4Swlei@.str = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1
76d5132b4Swlei
86d5132b4Swlei; Function Attrs: nounwind uwtable
95e49649dSMatt Arsenaultdefine dso_local i32 @bar(i32 %arg) #0 !dbg !13 {
105e49649dSMatt Arsenaultbb:
115e49649dSMatt Arsenault  %i = alloca i32, align 4
12*0d2271bbSMatt Arsenault  store i32 %arg, ptr %i, align 4, !tbaa !19
13*0d2271bbSMatt Arsenault  call void @llvm.dbg.declare(metadata ptr %i, metadata !18, metadata !DIExpression()), !dbg !23
146d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2012135647395072713, i64 1, i32 0, i64 -1), !dbg !24
15*0d2271bbSMatt Arsenault  %i1 = load i32, ptr %i, align 4, !dbg !24, !tbaa !19
165e49649dSMatt Arsenault  %i2 = add nsw i32 %i1, 1, !dbg !24
17*0d2271bbSMatt Arsenault  store i32 %i2, ptr %i, align 4, !dbg !24, !tbaa !19
18*0d2271bbSMatt Arsenault  %i3 = load i32, ptr %i, align 4, !dbg !25, !tbaa !19
195e49649dSMatt Arsenault  %i4 = add nsw i32 %i3, 1, !dbg !26
205e49649dSMatt Arsenault  ret i32 %i4, !dbg !27
216d5132b4Swlei}
226d5132b4Swlei
235e49649dSMatt Arsenault; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
246d5132b4Swleideclare void @llvm.dbg.declare(metadata, metadata, metadata) #1
256d5132b4Swlei
266d5132b4Swlei; Function Attrs: nounwind uwtable
275e49649dSMatt Arsenaultdefine dso_local i32 @baz(i32 %arg) #0 !dbg !28 {
285e49649dSMatt Arsenaultbb:
295e49649dSMatt Arsenault  %i = alloca i32, align 4
30*0d2271bbSMatt Arsenault  store i32 %arg, ptr %i, align 4, !tbaa !19
31*0d2271bbSMatt Arsenault  call void @llvm.dbg.declare(metadata ptr %i, metadata !30, metadata !DIExpression()), !dbg !31
326d5132b4Swlei  call void @llvm.pseudoprobe(i64 7546896869197086323, i64 1, i32 0, i64 -1), !dbg !32
33*0d2271bbSMatt Arsenault  %i1 = load i32, ptr %i, align 4, !dbg !32, !tbaa !19
345e49649dSMatt Arsenault  %i2 = add nsw i32 %i1, 10, !dbg !33
355e49649dSMatt Arsenault  ret i32 %i2, !dbg !34
366d5132b4Swlei}
376d5132b4Swlei
386d5132b4Swlei; Function Attrs: nounwind uwtable
39*0d2271bbSMatt Arsenaultdefine dso_local i32 @foo(i32 %arg, ptr %arg1) #0 !dbg !35 {
405e49649dSMatt Arsenaultbb:
415e49649dSMatt Arsenault  %i = alloca i32, align 4
42*0d2271bbSMatt Arsenault  %i2 = alloca ptr, align 8
43*0d2271bbSMatt Arsenault  store i32 %arg, ptr %i, align 4, !tbaa !19
44*0d2271bbSMatt Arsenault  call void @llvm.dbg.declare(metadata ptr %i, metadata !42, metadata !DIExpression()), !dbg !44
45*0d2271bbSMatt Arsenault  store ptr %arg1, ptr %i2, align 8, !tbaa !45
46*0d2271bbSMatt Arsenault  call void @llvm.dbg.declare(metadata ptr %i2, metadata !43, metadata !DIExpression()), !dbg !47
476d5132b4Swlei  call void @llvm.pseudoprobe(i64 6699318081062747564, i64 1, i32 0, i64 -1), !dbg !48
48*0d2271bbSMatt Arsenault  %i3 = load ptr, ptr %i2, align 8, !dbg !48, !tbaa !45
49*0d2271bbSMatt Arsenault  %i4 = load i32, ptr %i, align 4, !dbg !49, !tbaa !19
50*0d2271bbSMatt Arsenault  %i6 = call i32 (i32, ...) %i3(i32 %i4), !dbg !50
515e49649dSMatt Arsenault  ret i32 %i6, !dbg !52
526d5132b4Swlei}
536d5132b4Swlei
546d5132b4Swlei; Function Attrs: nounwind uwtable
556d5132b4Swleidefine dso_local i32 @main() #0 !dbg !53 {
565e49649dSMatt Arsenaultbb:
575e49649dSMatt Arsenault  %i = alloca i32, align 4
58*0d2271bbSMatt Arsenault  %i1 = alloca ptr, align 8
595e49649dSMatt Arsenault  %i2 = alloca i32, align 4
605e49649dSMatt Arsenault  %i3 = alloca i32, align 4
61*0d2271bbSMatt Arsenault  store i32 0, ptr %i, align 4
626d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 1, i32 0, i64 -1), !dbg !62
63*0d2271bbSMatt Arsenault  call void @llvm.lifetime.start.p0(i64 8, ptr %i1), !dbg !62
64*0d2271bbSMatt Arsenault  call void @llvm.dbg.declare(metadata ptr %i1, metadata !57, metadata !DIExpression()), !dbg !63
65*0d2271bbSMatt Arsenault  call void @llvm.lifetime.start.p0(i64 4, ptr %i2), !dbg !64
66*0d2271bbSMatt Arsenault  call void @llvm.dbg.declare(metadata ptr %i2, metadata !59, metadata !DIExpression()), !dbg !65
67*0d2271bbSMatt Arsenault  store i32 0, ptr %i2, align 4, !dbg !65, !tbaa !19
68*0d2271bbSMatt Arsenault  call void @llvm.lifetime.start.p0(i64 4, ptr %i3), !dbg !66
69*0d2271bbSMatt Arsenault  call void @llvm.dbg.declare(metadata ptr %i3, metadata !60, metadata !DIExpression()), !dbg !67
70*0d2271bbSMatt Arsenault  store i32 0, ptr %i3, align 4, !dbg !67, !tbaa !19
715e49649dSMatt Arsenault  br label %bb7, !dbg !66
726d5132b4Swlei
735e49649dSMatt Arsenaultbb7:                                              ; preds = %bb25, %bb
746d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 2, i32 0, i64 -1), !dbg !68
75*0d2271bbSMatt Arsenault  %i8 = load i32, ptr %i3, align 4, !dbg !68, !tbaa !19
765e49649dSMatt Arsenault  %i9 = icmp slt i32 %i8, 1000000000, !dbg !70
775e49649dSMatt Arsenault  br i1 %i9, label %bb12, label %bb10, !dbg !71
786d5132b4Swlei
795e49649dSMatt Arsenaultbb10:                                             ; preds = %bb7
806d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 3, i32 0, i64 -1), !dbg !72
81*0d2271bbSMatt Arsenault  call void @llvm.lifetime.end.p0(i64 4, ptr %i3), !dbg !72
825e49649dSMatt Arsenault  br label %bb28
836d5132b4Swlei
845e49649dSMatt Arsenaultbb12:                                             ; preds = %bb7
856d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 4, i32 0, i64 -1), !dbg !73
86*0d2271bbSMatt Arsenault  %i13 = load i32, ptr %i3, align 4, !dbg !73, !tbaa !19
875e49649dSMatt Arsenault  %i14 = srem i32 %i13, 100, !dbg !76
885e49649dSMatt Arsenault  %i15 = icmp eq i32 %i14, 0, !dbg !77
895e49649dSMatt Arsenault  br i1 %i15, label %bb16, label %bb17, !dbg !78
906d5132b4Swlei
915e49649dSMatt Arsenaultbb16:                                             ; preds = %bb12
926d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 5, i32 0, i64 -1), !dbg !79
93*0d2271bbSMatt Arsenault  store ptr @bar, ptr %i1, align 8, !dbg !79, !tbaa !45
945e49649dSMatt Arsenault  br label %bb18, !dbg !80
956d5132b4Swlei
965e49649dSMatt Arsenaultbb17:                                             ; preds = %bb12
976d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 6, i32 0, i64 -1), !dbg !81
98*0d2271bbSMatt Arsenault  store ptr @baz, ptr %i1, align 8, !dbg !81, !tbaa !45
995e49649dSMatt Arsenault  br label %bb18
1006d5132b4Swlei
1015e49649dSMatt Arsenaultbb18:                                             ; preds = %bb17, %bb16
1026d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 7, i32 0, i64 -1), !dbg !82
103*0d2271bbSMatt Arsenault  %i19 = load i32, ptr %i3, align 4, !dbg !82, !tbaa !19
104*0d2271bbSMatt Arsenault  %i20 = load ptr, ptr %i1, align 8, !dbg !83, !tbaa !45
105*0d2271bbSMatt Arsenault  %i22 = call i32 @foo(i32 %i19, ptr %i20), !dbg !84
106*0d2271bbSMatt Arsenault  %i23 = load i32, ptr %i2, align 4, !dbg !86, !tbaa !19
1075e49649dSMatt Arsenault  %i24 = add nsw i32 %i23, %i22, !dbg !86
108*0d2271bbSMatt Arsenault  store i32 %i24, ptr %i2, align 4, !dbg !86, !tbaa !19
1095e49649dSMatt Arsenault  br label %bb25, !dbg !87
1106d5132b4Swlei
1115e49649dSMatt Arsenaultbb25:                                             ; preds = %bb18
1126d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 8, i32 0, i64 -1), !dbg !88
113*0d2271bbSMatt Arsenault  %i26 = load i32, ptr %i3, align 4, !dbg !88, !tbaa !19
1145e49649dSMatt Arsenault  %i27 = add nsw i32 %i26, 1, !dbg !88
115*0d2271bbSMatt Arsenault  store i32 %i27, ptr %i3, align 4, !dbg !88, !tbaa !19
1165e49649dSMatt Arsenault  br label %bb7, !dbg !72, !llvm.loop !89
1176d5132b4Swlei
1185e49649dSMatt Arsenaultbb28:                                             ; preds = %bb10
1196d5132b4Swlei  call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 9, i32 0, i64 -1), !dbg !92
120*0d2271bbSMatt Arsenault  %i29 = load i32, ptr %i2, align 4, !dbg !92, !tbaa !19
121*0d2271bbSMatt Arsenault  %i30 = call i32 (ptr, ...) @printf(ptr @.str, i32 %i29), !dbg !93
122*0d2271bbSMatt Arsenault  call void @llvm.lifetime.end.p0(i64 4, ptr %i2), !dbg !95
123*0d2271bbSMatt Arsenault  call void @llvm.lifetime.end.p0(i64 8, ptr %i1), !dbg !95
1246d5132b4Swlei  ret i32 0, !dbg !96
1256d5132b4Swlei}
1266d5132b4Swlei
1275e49649dSMatt Arsenault; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
128*0d2271bbSMatt Arsenaultdeclare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2
1296d5132b4Swlei
1305e49649dSMatt Arsenault; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
131*0d2271bbSMatt Arsenaultdeclare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2
1326d5132b4Swlei
133*0d2271bbSMatt Arsenaultdeclare dso_local i32 @printf(ptr, ...)
1346d5132b4Swlei
1355e49649dSMatt Arsenault; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite)
1365e49649dSMatt Arsenaultdeclare void @llvm.pseudoprobe(i64, i64, i32, i64) #3
1376d5132b4Swlei
1384ab3041aSserge-sans-pailleattributes #0 = { nounwind uwtable "disable-tail-calls"="true" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "unsafe-fp-math"="false" "use-sample-profile" "use-soft-float"="false" }
1395e49649dSMatt Arsenaultattributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
1405e49649dSMatt Arsenaultattributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
1415e49649dSMatt Arsenaultattributes #3 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) }
1426d5132b4Swlei
1436d5132b4Swlei!llvm.dbg.cu = !{!0}
1446d5132b4Swlei!llvm.module.flags = !{!3, !4, !5, !6, !7}
1456d5132b4Swlei!llvm.ident = !{!8}
1466d5132b4Swlei!llvm.pseudo_probe_desc = !{!9, !10, !11, !12}
1476d5132b4Swlei
1486d5132b4Swlei!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 13.0.06)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, splitDebugInlining: false, nameTableKind: None)
1496d5132b4Swlei!1 = !DIFile(filename: "test.c", directory: "")
1506d5132b4Swlei!2 = !{}
1516d5132b4Swlei!3 = !{i32 7, !"Dwarf Version", i32 4}
1526d5132b4Swlei!4 = !{i32 2, !"Debug Info Version", i32 3}
1536d5132b4Swlei!5 = !{i32 1, !"wchar_size", i32 4}
1546d5132b4Swlei!6 = !{i32 1, !"ThinLTO", i32 0}
1556d5132b4Swlei!7 = !{i32 1, !"EnableSplitLTOUnit", i32 1}
1566d5132b4Swlei!8 = !{!"clang version 13.0.0 "}
1576d5132b4Swlei!9 = !{i64 -2012135647395072713, i64 4294967295, !"bar", null}
1586d5132b4Swlei!10 = !{i64 7546896869197086323, i64 4294967295, !"baz", null}
1596d5132b4Swlei!11 = !{i64 6699318081062747564, i64 281479271677951, !"foo", null}
1606d5132b4Swlei!12 = !{i64 -2624081020897602054, i64 563125815542069, !"main", null}
1616d5132b4Swlei!13 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 2, type: !14, scopeLine: 3, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !17)
1626d5132b4Swlei!14 = !DISubroutineType(types: !15)
1636d5132b4Swlei!15 = !{!16, !16}
1646d5132b4Swlei!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
1656d5132b4Swlei!17 = !{!18}
1666d5132b4Swlei!18 = !DILocalVariable(name: "x", arg: 1, scope: !13, file: !1, line: 2, type: !16)
1676d5132b4Swlei!19 = !{!20, !20, i64 0}
1686d5132b4Swlei!20 = !{!"int", !21, i64 0}
1696d5132b4Swlei!21 = !{!"omnipotent char", !22, i64 0}
1706d5132b4Swlei!22 = !{!"Simple C/C++ TBAA"}
1716d5132b4Swlei!23 = !DILocation(line: 2, column: 13, scope: !13)
1726d5132b4Swlei!24 = !DILocation(line: 4, column: 7, scope: !13)
1736d5132b4Swlei!25 = !DILocation(line: 5, column: 12, scope: !13)
1746d5132b4Swlei!26 = !DILocation(line: 5, column: 14, scope: !13)
1756d5132b4Swlei!27 = !DILocation(line: 5, column: 5, scope: !13)
1766d5132b4Swlei!28 = distinct !DISubprogram(name: "baz", scope: !1, file: !1, line: 9, type: !14, scopeLine: 9, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !29)
1776d5132b4Swlei!29 = !{!30}
1786d5132b4Swlei!30 = !DILocalVariable(name: "x", arg: 1, scope: !28, file: !1, line: 9, type: !16)
1796d5132b4Swlei!31 = !DILocation(line: 9, column: 13, scope: !28)
1806d5132b4Swlei!32 = !DILocation(line: 10, column: 10, scope: !28)
1816d5132b4Swlei!33 = !DILocation(line: 10, column: 12, scope: !28)
1826d5132b4Swlei!34 = !DILocation(line: 10, column: 3, scope: !28)
1836d5132b4Swlei!35 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 13, type: !36, scopeLine: 13, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !41)
1846d5132b4Swlei!36 = !DISubroutineType(types: !37)
1856d5132b4Swlei!37 = !{!16, !16, !38}
1866d5132b4Swlei!38 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !39, size: 64)
1876d5132b4Swlei!39 = !DISubroutineType(types: !40)
1886d5132b4Swlei!40 = !{!16, null}
1896d5132b4Swlei!41 = !{!42, !43}
1906d5132b4Swlei!42 = !DILocalVariable(name: "x", arg: 1, scope: !35, file: !1, line: 13, type: !16)
1916d5132b4Swlei!43 = !DILocalVariable(name: "f", arg: 2, scope: !35, file: !1, line: 13, type: !38)
1926d5132b4Swlei!44 = !DILocation(line: 13, column: 13, scope: !35)
1936d5132b4Swlei!45 = !{!46, !46, i64 0}
1946d5132b4Swlei!46 = !{!"any pointer", !21, i64 0}
1956d5132b4Swlei!47 = !DILocation(line: 13, column: 22, scope: !35)
1966d5132b4Swlei!48 = !DILocation(line: 14, column: 10, scope: !35)
1976d5132b4Swlei!49 = !DILocation(line: 14, column: 12, scope: !35)
1986d5132b4Swlei!50 = !DILocation(line: 14, column: 10, scope: !51)
1995f2d7300SHongtao Yu;; A discriminator of 108527639 which is 0x6780017 in hexdecimal, stands for an indirect call probe
2005f2d7300SHongtao Yu;; with an index of 2 and probe factor of 0.79.
2016d5132b4Swlei!51 = !DILexicalBlockFile(scope: !35, file: !1, discriminator: 108527639)
2026d5132b4Swlei!52 = !DILocation(line: 14, column: 3, scope: !35)
2036d5132b4Swlei!53 = distinct !DISubprogram(name: "main", scope: !1, file: !1, line: 17, type: !54, scopeLine: 18, flags: DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !56)
2046d5132b4Swlei!54 = !DISubroutineType(types: !55)
2056d5132b4Swlei!55 = !{!16}
2066d5132b4Swlei!56 = !{!57, !59, !60}
2076d5132b4Swlei!57 = !DILocalVariable(name: "x", scope: !53, file: !1, line: 19, type: !58)
2086d5132b4Swlei!58 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !14, size: 64)
2096d5132b4Swlei!59 = !DILocalVariable(name: "sum", scope: !53, file: !1, line: 25, type: !16)
2106d5132b4Swlei!60 = !DILocalVariable(name: "i", scope: !61, file: !1, line: 26, type: !16)
2116d5132b4Swlei!61 = distinct !DILexicalBlock(scope: !53, file: !1, line: 26, column: 5)
2126d5132b4Swlei!62 = !DILocation(line: 19, column: 3, scope: !53)
2136d5132b4Swlei!63 = !DILocation(line: 19, column: 9, scope: !53)
2146d5132b4Swlei!64 = !DILocation(line: 25, column: 5, scope: !53)
2156d5132b4Swlei!65 = !DILocation(line: 25, column: 9, scope: !53)
2166d5132b4Swlei!66 = !DILocation(line: 26, column: 10, scope: !61)
2176d5132b4Swlei!67 = !DILocation(line: 26, column: 14, scope: !61)
2186d5132b4Swlei!68 = !DILocation(line: 26, column: 21, scope: !69)
2196d5132b4Swlei!69 = distinct !DILexicalBlock(scope: !61, file: !1, line: 26, column: 5)
2206d5132b4Swlei!70 = !DILocation(line: 26, column: 23, scope: !69)
2216d5132b4Swlei!71 = !DILocation(line: 26, column: 5, scope: !61)
2226d5132b4Swlei!72 = !DILocation(line: 26, column: 5, scope: !69)
2236d5132b4Swlei!73 = !DILocation(line: 27, column: 10, scope: !74)
2246d5132b4Swlei!74 = distinct !DILexicalBlock(scope: !75, file: !1, line: 27, column: 10)
2256d5132b4Swlei!75 = distinct !DILexicalBlock(scope: !69, file: !1, line: 26, column: 45)
2266d5132b4Swlei!76 = !DILocation(line: 27, column: 12, scope: !74)
2276d5132b4Swlei!77 = !DILocation(line: 27, column: 19, scope: !74)
2286d5132b4Swlei!78 = !DILocation(line: 27, column: 10, scope: !75)
2296d5132b4Swlei!79 = !DILocation(line: 28, column: 11, scope: !74)
2306d5132b4Swlei!80 = !DILocation(line: 28, column: 9, scope: !74)
2316d5132b4Swlei!81 = !DILocation(line: 30, column: 11, scope: !74)
2326d5132b4Swlei!82 = !DILocation(line: 32, column: 17, scope: !75)
2336d5132b4Swlei!83 = !DILocation(line: 32, column: 20, scope: !75)
2346d5132b4Swlei!84 = !DILocation(line: 32, column: 13, scope: !85)
2355f2d7300SHongtao Yu;; A discriminator of 116916311 which is 0x6f80057 in hexdecimal, stands for an indirect call probe
2365f2d7300SHongtao Yu;; with an index of 10 and probe factor of 0.95.
2376d5132b4Swlei!85 = !DILexicalBlockFile(scope: !75, file: !1, discriminator: 116916311)
2386d5132b4Swlei!86 = !DILocation(line: 32, column: 11, scope: !75)
2396d5132b4Swlei!87 = !DILocation(line: 33, column: 5, scope: !75)
2406d5132b4Swlei!88 = !DILocation(line: 26, column: 41, scope: !69)
2416d5132b4Swlei!89 = distinct !{!89, !71, !90, !91}
2426d5132b4Swlei!90 = !DILocation(line: 33, column: 5, scope: !61)
2436d5132b4Swlei!91 = !{!"llvm.loop.mustprogress"}
2446d5132b4Swlei!92 = !DILocation(line: 34, column: 21, scope: !53)
2456d5132b4Swlei!93 = !DILocation(line: 34, column: 5, scope: !94)
2466d5132b4Swlei!94 = !DILexicalBlockFile(scope: !53, file: !1, discriminator: 104333335)
2476d5132b4Swlei!95 = !DILocation(line: 36, column: 1, scope: !53)
2486d5132b4Swlei!96 = !DILocation(line: 35, column: 5, scope: !53)
2496d5132b4Swlei
2505f2d7300SHongtao Yu; CHECK: define dso_local i32 @main
2515e49649dSMatt Arsenault; CHECK: %{{.+}} = call i32 (i32, ...) %{{.+}}(i32 %{{.+}}) #[[#]], !dbg ![[#DBGID:]], !prof ![[#PROF:]]
2526d5132b4Swlei
2535f2d7300SHongtao Yu;; A discriminator of 106430487 which is 0x6580017 in hexdecimal, stands for an indirect call probe
2545f2d7300SHongtao Yu;; with an index of 2 and probe factor of 0.75, which is from 0.95 * 0.79.
2556d5132b4Swlei; CHECK: ![[#DBGID]] = !DILocation(line: [[#]], column: [[#]], scope: ![[#SCOPE:]], inlinedAt: ![[#]])
2565f2d7300SHongtao Yu; CHECK: ![[#SCOPE]] = !DILexicalBlockFile(scope: ![[#]], file: ![[#]], discriminator: 106430487)
2575f2d7300SHongtao Yu
2585f2d7300SHongtao Yu;; The remaining count of the second target (bar) should be from the original count multiplied by two callsite
2595f2d7300SHongtao Yu;; factors, i.e, roughly 11259 * 0.95 * 0.79 = 8444.
2605f2d7300SHongtao Yu; CHECK: ![[#PROF]] = !{!"VP", i32 0, i64 8444, i64 7546896869197086323, i64 -1, i64 -2012135647395072713, i64 8444}
261