[llvm] r249848 - Make HeaderLineno a local variable.
Dehao Chen via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 9 09:50:16 PDT 2015
Author: dehao
Date: Fri Oct 9 11:50:16 2015
New Revision: 249848
URL: http://llvm.org/viewvc/llvm-project?rev=249848&view=rev
Log:
Make HeaderLineno a local variable.
http://reviews.llvm.org/D13576
As we are using hierarchical profile, there is no need to keep HeaderLineno a member variable. This is because each level of the inline stack will have its own header lineno. One should use the head lineno of its own inline stack level instead of the actual symbol.
Modified:
llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp
Modified: llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp?rev=249848&r1=249847&r2=249848&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/SampleProfile.cpp Fri Oct 9 11:50:16 2015
@@ -123,10 +123,6 @@ protected:
bool propagateThroughEdges(Function &F);
void computeDominanceAndLoopInfo(Function &F);
- /// \brief Line number for the function header. Used to compute absolute
- /// line numbers from the relative line numbers found in the profile.
- unsigned HeaderLineno;
-
/// \brief Map basic blocks to their computed weights.
///
/// The weight of a basic block is defined to be the maximum
@@ -226,14 +222,16 @@ SampleProfileLoader::getInstWeight(const
if (!DLoc)
return std::error_code();
- unsigned Lineno = DLoc.getLine();
- if (Lineno < HeaderLineno)
+ const FunctionSamples *FS = findFunctionSamples(Inst);
+ if (!FS)
return std::error_code();
const DILocation *DIL = DLoc;
- const FunctionSamples *FS = findFunctionSamples(Inst);
- if (!FS)
+ unsigned Lineno = DLoc.getLine();
+ unsigned HeaderLineno = DIL->getScope()->getSubprogram()->getLine();
+ if (Lineno < HeaderLineno)
return std::error_code();
+
ErrorOr<unsigned> R =
FS->findSamplesAt(Lineno - HeaderLineno, DIL->getDiscriminator());
if (R)
@@ -837,13 +835,11 @@ void SampleProfileLoader::computeDominan
bool SampleProfileLoader::emitAnnotations(Function &F) {
bool Changed = false;
- // Initialize invariants used during computation and propagation.
- HeaderLineno = getFunctionLoc(F);
- if (HeaderLineno == 0)
+ if (getFunctionLoc(F) == 0)
return false;
DEBUG(dbgs() << "Line number for the first instruction in " << F.getName()
- << ": " << HeaderLineno << "\n");
+ << ": " << getFunctionLoc(F) << "\n");
Changed |= inlineHotFunctions(F);
More information about the llvm-commits
mailing list