Use base discriminator in sample pgo profile matching.
Summary: The discriminator has been encoded, and only the base discriminator should be used during profile matching. Reviewers: dblaikie, davidxl Reviewed By: dblaikie, davidxl Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30218 llvm-svn: 295999
This commit is contained in:
parent
f4e201e09f
commit
533bc6ea8e
@ -474,7 +474,7 @@ ErrorOr<uint64_t> SampleProfileLoader::getInstWeight(const Instruction &Inst) {
|
||||
|
||||
const DILocation *DIL = DLoc;
|
||||
uint32_t LineOffset = getOffset(DIL);
|
||||
uint32_t Discriminator = DIL->getDiscriminator();
|
||||
uint32_t Discriminator = DIL->getBaseDiscriminator();
|
||||
ErrorOr<uint64_t> R = IsCall
|
||||
? FS->findCallSamplesAt(LineOffset, Discriminator)
|
||||
: FS->findSamplesAt(LineOffset, Discriminator);
|
||||
@ -490,9 +490,10 @@ ErrorOr<uint64_t> SampleProfileLoader::getInstWeight(const Instruction &Inst) {
|
||||
" samples from profile (offset: " + Twine(LineOffset) +
|
||||
((Discriminator) ? Twine(".") + Twine(Discriminator) : "") + ")");
|
||||
}
|
||||
DEBUG(dbgs() << " " << DLoc.getLine() << "." << DIL->getDiscriminator()
|
||||
<< ":" << Inst << " (line offset: " << LineOffset << "."
|
||||
<< DIL->getDiscriminator() << " - weight: " << R.get()
|
||||
DEBUG(dbgs() << " " << DLoc.getLine() << "."
|
||||
<< DIL->getBaseDiscriminator() << ":" << Inst
|
||||
<< " (line offset: " << LineOffset << "."
|
||||
<< DIL->getBaseDiscriminator() << " - weight: " << R.get()
|
||||
<< ")\n");
|
||||
}
|
||||
return R;
|
||||
@ -564,7 +565,7 @@ SampleProfileLoader::findCalleeFunctionSamples(const Instruction &Inst) const {
|
||||
return nullptr;
|
||||
|
||||
return FS->findFunctionSamplesAt(
|
||||
LineLocation(getOffset(DIL), DIL->getDiscriminator()));
|
||||
LineLocation(getOffset(DIL), DIL->getBaseDiscriminator()));
|
||||
}
|
||||
|
||||
/// \brief Get the FunctionSamples for an instruction.
|
||||
@ -584,7 +585,7 @@ SampleProfileLoader::findFunctionSamples(const Instruction &Inst) const {
|
||||
return Samples;
|
||||
}
|
||||
for (DIL = DIL->getInlinedAt(); DIL; DIL = DIL->getInlinedAt())
|
||||
S.push_back(LineLocation(getOffset(DIL), DIL->getDiscriminator()));
|
||||
S.push_back(LineLocation(getOffset(DIL), DIL->getBaseDiscriminator()));
|
||||
if (S.size() == 0)
|
||||
return Samples;
|
||||
const FunctionSamples *FS = Samples;
|
||||
@ -1105,7 +1106,7 @@ void SampleProfileLoader::propagateWeights(Function &F) {
|
||||
continue;
|
||||
const DILocation *DIL = DLoc;
|
||||
uint32_t LineOffset = getOffset(DIL);
|
||||
uint32_t Discriminator = DIL->getDiscriminator();
|
||||
uint32_t Discriminator = DIL->getBaseDiscriminator();
|
||||
|
||||
const FunctionSamples *FS = findFunctionSamples(I);
|
||||
if (!FS)
|
||||
|
||||
@ -103,14 +103,14 @@ declare i32 @printf(i8*, ...) #2
|
||||
!12 = !DILocation(line: 8, scope: !7)
|
||||
!13 = !DILocation(line: 9, scope: !7)
|
||||
!14 = !DILocation(line: 9, scope: !15)
|
||||
!15 = !DILexicalBlockFile(discriminator: 1, file: !1, scope: !7)
|
||||
!15 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !7)
|
||||
!16 = !DILocation(line: 10, scope: !17)
|
||||
!17 = distinct !DILexicalBlock(line: 10, column: 0, file: !1, scope: !7)
|
||||
!18 = !DILocation(line: 10, scope: !19)
|
||||
!19 = !DILexicalBlockFile(discriminator: 1, file: !1, scope: !17)
|
||||
!19 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !17)
|
||||
!20 = !DILocation(line: 10, scope: !21)
|
||||
!21 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !17)
|
||||
!21 = !DILexicalBlockFile(discriminator: 4, file: !1, scope: !17)
|
||||
!22 = !DILocation(line: 10, scope: !23)
|
||||
!23 = !DILexicalBlockFile(discriminator: 3, file: !1, scope: !17)
|
||||
!23 = !DILexicalBlockFile(discriminator: 6, file: !1, scope: !17)
|
||||
!24 = !DILocation(line: 11, scope: !7)
|
||||
!25 = !DILocation(line: 12, scope: !7)
|
||||
|
||||
@ -106,7 +106,7 @@ attributes #0 = { nounwind readnone }
|
||||
!13 = !{!14, !14}
|
||||
!14 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
|
||||
!15 = !DILocation(line: 5, column: 27, scope: !16)
|
||||
!16 = !DILexicalBlockFile(scope: !11, file: !3, discriminator: 3)
|
||||
!16 = !DILexicalBlockFile(scope: !11, file: !3, discriminator: 6)
|
||||
!17 = distinct !DISubprogram(name: "main", scope: !3, file: !3, line: 7, type: !18, isLocal: false, isDefinition: true, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: false, unit: !2, variables: !4)
|
||||
!18 = !DISubroutineType(types: !19)
|
||||
!19 = !{!14}
|
||||
@ -118,7 +118,7 @@ attributes #0 = { nounwind readnone }
|
||||
!25 = !DILocation(line: 9, column: 18, scope: !24)
|
||||
!26 = !DILocation(line: 9, column: 8, scope: !24)
|
||||
!27 = !DILocation(line: 9, column: 25, scope: !28)
|
||||
!28 = !DILexicalBlockFile(scope: !29, file: !3, discriminator: 1)
|
||||
!28 = !DILexicalBlockFile(scope: !29, file: !3, discriminator: 2)
|
||||
!29 = distinct !DILexicalBlock(scope: !24, file: !3, line: 9, column: 3)
|
||||
!30 = !DILocation(line: 9, column: 29, scope: !28)
|
||||
!31 = !DILocation(line: 9, column: 27, scope: !28)
|
||||
@ -130,7 +130,7 @@ attributes #0 = { nounwind readnone }
|
||||
!37 = !DILocation(line: 10, column: 11, scope: !34)
|
||||
!38 = !DILocation(line: 10, column: 9, scope: !35)
|
||||
!39 = !DILocation(line: 10, column: 36, scope: !40)
|
||||
!40 = !DILexicalBlockFile(scope: !34, file: !3, discriminator: 1)
|
||||
!40 = !DILexicalBlockFile(scope: !34, file: !3, discriminator: 2)
|
||||
!41 = !DILocation(line: 10, column: 23, scope: !40)
|
||||
!42 = !DILocation(line: 10, column: 20, scope: !40)
|
||||
!43 = !DILocation(line: 10, column: 16, scope: !40)
|
||||
@ -139,7 +139,7 @@ attributes #0 = { nounwind readnone }
|
||||
!46 = !DILocation(line: 11, column: 9, scope: !35)
|
||||
!47 = !DILocation(line: 12, column: 3, scope: !35)
|
||||
!48 = !DILocation(line: 9, column: 33, scope: !49)
|
||||
!49 = !DILexicalBlockFile(scope: !29, file: !3, discriminator: 2)
|
||||
!49 = !DILexicalBlockFile(scope: !29, file: !3, discriminator: 4)
|
||||
!50 = !DILocation(line: 9, column: 3, scope: !49)
|
||||
!51 = !DILocation(line: 13, column: 25, scope: !17)
|
||||
!52 = !DILocation(line: 13, column: 3, scope: !17)
|
||||
|
||||
@ -79,12 +79,12 @@ while.end: ; preds = %while.cond
|
||||
!10 = !DILocation(line: 2, scope: !4)
|
||||
!11 = !DILocation(line: 3, scope: !4)
|
||||
!12 = !DILocation(line: 3, scope: !13)
|
||||
!13 = !DILexicalBlockFile(discriminator: 1, file: !1, scope: !4)
|
||||
!13 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !4)
|
||||
!14 = !DILocation(line: 4, scope: !15)
|
||||
!15 = distinct !DILexicalBlock(line: 4, column: 0, file: !1, scope: !16)
|
||||
!16 = distinct !DILexicalBlock(line: 3, column: 0, file: !1, scope: !4)
|
||||
!17 = !DILocation(line: 4, scope: !18)
|
||||
!18 = !DILexicalBlockFile(discriminator: 1, file: !1, scope: !15)
|
||||
!18 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !15)
|
||||
!19 = !DILocation(line: 5, scope: !16)
|
||||
!20 = !DILocation(line: 6, scope: !16)
|
||||
!21 = !DILocation(line: 7, scope: !4)
|
||||
|
||||
@ -120,7 +120,7 @@ for.end: ; preds = %for.cond
|
||||
!27 = !DILocation(line: 9, column: 12, scope: !26)
|
||||
!28 = !DILocation(line: 9, column: 8, scope: !26)
|
||||
!29 = !DILocation(line: 9, column: 19, scope: !30)
|
||||
!30 = !DILexicalBlockFile(scope: !31, file: !1, discriminator: 1)
|
||||
!30 = !DILexicalBlockFile(scope: !31, file: !1, discriminator: 2)
|
||||
!31 = distinct !DILexicalBlock(scope: !26, file: !1, line: 9, column: 3)
|
||||
!32 = !DILocation(line: 9, column: 21, scope: !30)
|
||||
!33 = !DILocation(line: 9, column: 3, scope: !30)
|
||||
|
||||
@ -96,14 +96,14 @@ declare i32 @printf(i8*, ...) #2
|
||||
!12 = !DILocation(line: 8, scope: !7)
|
||||
!13 = !DILocation(line: 9, scope: !7)
|
||||
!14 = !DILocation(line: 9, scope: !15)
|
||||
!15 = !DILexicalBlockFile(discriminator: 1, file: !1, scope: !7)
|
||||
!15 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !7)
|
||||
!16 = !DILocation(line: 10, scope: !17)
|
||||
!17 = distinct !DILexicalBlock(line: 10, column: 0, file: !1, scope: !7)
|
||||
!18 = !DILocation(line: 10, scope: !19)
|
||||
!19 = !DILexicalBlockFile(discriminator: 1, file: !1, scope: !17)
|
||||
!19 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !17)
|
||||
!20 = !DILocation(line: 10, scope: !21)
|
||||
!21 = !DILexicalBlockFile(discriminator: 2, file: !1, scope: !17)
|
||||
!21 = !DILexicalBlockFile(discriminator: 4, file: !1, scope: !17)
|
||||
!22 = !DILocation(line: 10, scope: !23)
|
||||
!23 = !DILexicalBlockFile(discriminator: 3, file: !1, scope: !17)
|
||||
!23 = !DILexicalBlockFile(discriminator: 6, file: !1, scope: !17)
|
||||
!24 = !DILocation(line: 11, scope: !7)
|
||||
!25 = !DILocation(line: 12, scope: !7)
|
||||
|
||||
@ -244,7 +244,7 @@ attributes #3 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-
|
||||
!31 = !DILocation(line: 7, column: 15, scope: !29)
|
||||
!32 = !DILocation(line: 7, column: 10, scope: !29)
|
||||
!33 = !DILocation(line: 7, column: 22, scope: !34)
|
||||
!34 = !DILexicalBlockFile(scope: !35, file: !1, discriminator: 1)
|
||||
!34 = !DILexicalBlockFile(scope: !35, file: !1, discriminator: 2)
|
||||
!35 = distinct !DILexicalBlock(scope: !29, file: !1, line: 7, column: 5)
|
||||
!36 = !DILocation(line: 7, column: 26, scope: !34)
|
||||
!37 = !DILocation(line: 7, column: 24, scope: !34)
|
||||
@ -275,7 +275,7 @@ attributes #3 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-
|
||||
!62 = !DILocation(line: 14, column: 24, scope: !59)
|
||||
!63 = !DILocation(line: 14, column: 14, scope: !59)
|
||||
!64 = !DILocation(line: 14, column: 31, scope: !65)
|
||||
!65 = !DILexicalBlockFile(scope: !66, file: !1, discriminator: 1)
|
||||
!65 = !DILexicalBlockFile(scope: !66, file: !1, discriminator: 2)
|
||||
!66 = distinct !DILexicalBlock(scope: !59, file: !1, line: 14, column: 9)
|
||||
!67 = !DILocation(line: 14, column: 33, scope: !65)
|
||||
!68 = !DILocation(line: 14, column: 9, scope: !65)
|
||||
@ -285,11 +285,11 @@ attributes #3 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-
|
||||
!72 = !DILocation(line: 16, column: 13, scope: !70)
|
||||
!73 = !DILocation(line: 17, column: 9, scope: !70)
|
||||
!74 = !DILocation(line: 14, column: 41, scope: !75)
|
||||
!75 = !DILexicalBlockFile(scope: !66, file: !1, discriminator: 2)
|
||||
!75 = !DILexicalBlockFile(scope: !66, file: !1, discriminator: 4)
|
||||
!76 = !DILocation(line: 14, column: 9, scope: !75)
|
||||
!77 = !DILocation(line: 19, column: 5, scope: !41)
|
||||
!78 = !DILocation(line: 7, column: 30, scope: !79)
|
||||
!79 = !DILexicalBlockFile(scope: !35, file: !1, discriminator: 2)
|
||||
!79 = !DILexicalBlockFile(scope: !35, file: !1, discriminator: 4)
|
||||
!80 = !DILocation(line: 7, column: 5, scope: !79)
|
||||
!81 = !DILocation(line: 21, column: 10, scope: !6)
|
||||
!82 = !DILocation(line: 21, column: 14, scope: !6)
|
||||
@ -313,5 +313,5 @@ attributes #3 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-
|
||||
!100 = !DILocation(line: 28, column: 57, scope: !86)
|
||||
!101 = !DILocation(line: 28, column: 47, scope: !86)
|
||||
!102 = !DILocation(line: 28, column: 3, scope: !103)
|
||||
!103 = !DILexicalBlockFile(scope: !86, file: !1, discriminator: 1)
|
||||
!103 = !DILexicalBlockFile(scope: !86, file: !1, discriminator: 2)
|
||||
!104 = !DILocation(line: 29, column: 3, scope: !86)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user