diff options
author | Dehao Chen <dehao@google.com> | 2017-02-23 18:27:45 +0000 |
---|---|---|
committer | Dehao Chen <dehao@google.com> | 2017-02-23 18:27:45 +0000 |
commit | 533bc6ea8eb477ffd7f0bee97d70cbc6d0ee1ec4 (patch) | |
tree | fb4982d5db0c5feeb3bd71b5354b8672f660949e /llvm/lib/Transforms/IPO/SampleProfile.cpp | |
parent | f4e201e09f4fe51db407571a2ed0642ff1894a7d (diff) | |
download | bcm5719-llvm-533bc6ea8eb477ffd7f0bee97d70cbc6d0ee1ec4.tar.gz bcm5719-llvm-533bc6ea8eb477ffd7f0bee97d70cbc6d0ee1ec4.zip |
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
Diffstat (limited to 'llvm/lib/Transforms/IPO/SampleProfile.cpp')
-rw-r--r-- | llvm/lib/Transforms/IPO/SampleProfile.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp index d6678279355..34891601cba 100644 --- a/llvm/lib/Transforms/IPO/SampleProfile.cpp +++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp @@ -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) |