Index: llvm/lib/Transforms/IPO/SampleProfile.cpp =================================================================== --- llvm/lib/Transforms/IPO/SampleProfile.cpp +++ llvm/lib/Transforms/IPO/SampleProfile.cpp @@ -197,13 +197,13 @@ public: SampleCoverageTracker(SampleProfileLoader &SPL) : SPLoader(SPL){}; - bool markSamplesUsed(const FunctionSamples *FS, uint32_t LineOffset, - uint32_t Discriminator, uint64_t Samples); - unsigned computeCoverage(unsigned Used, unsigned Total) const; - unsigned countUsedRecords(const FunctionSamples *FS, - ProfileSummaryInfo *PSI) const; - unsigned countBodyRecords(const FunctionSamples *FS, - ProfileSummaryInfo *PSI) const; + inline bool markSamplesUsed(const FunctionSamples *FS, uint32_t LineOffset, + uint32_t Discriminator, uint64_t Samples); + inline unsigned computeCoverage(unsigned Used, unsigned Total) const; + inline unsigned countUsedRecords(const FunctionSamples *FS, + ProfileSummaryInfo *PSI) const; + inline unsigned countBodyRecords(const FunctionSamples *FS, + ProfileSummaryInfo *PSI) const; uint64_t getTotalUsedSamples() const { return TotalUsedSamples; } uint64_t countBodySamples(const FunctionSamples *FS, ProfileSummaryInfo *PSI) const; @@ -340,16 +340,17 @@ friend class SampleCoverageTracker; bool runOnFunction(Function &F, ModuleAnalysisManager *AM); - unsigned getFunctionLoc(Function &F); + inline unsigned getFunctionLoc(Function &F); bool emitAnnotations(Function &F); - ErrorOr getInstWeight(const Instruction &I); + inline ErrorOr getInstWeight(const Instruction &I); ErrorOr getProbeWeight(const Instruction &I); - ErrorOr getBlockWeight(const BasicBlock *BB); + inline ErrorOr getBlockWeight(const BasicBlock *BB); const FunctionSamples *findCalleeFunctionSamples(const CallBase &I) const; std::vector findIndirectCallFunctionSamples(const Instruction &I, uint64_t &Sum) const; - mutable DenseMap DILocation2SampleMap; - const FunctionSamples *findFunctionSamples(const Instruction &I) const; + mutable DenseMap + DILocation2SampleMap; + inline const FunctionSamples *findFunctionSamples(const Instruction &I) const; bool inlineCallInstruction(CallBase &CB); bool inlineHotFunctions(Function &F, DenseSet &InlinedGUIDs); @@ -358,24 +359,26 @@ void emitOptimizationRemarksForInlineCandidates( const SmallVectorImpl &Candidates, const Function &F, bool Hot); - void printEdgeWeight(raw_ostream &OS, Edge E); - void printBlockWeight(raw_ostream &OS, const BasicBlock *BB) const; - void printBlockEquivalence(raw_ostream &OS, const BasicBlock *BB); - bool computeBlockWeights(Function &F); - void findEquivalenceClasses(Function &F); + inline void printEdgeWeight(raw_ostream &OS, Edge E); + inline void printBlockWeight(raw_ostream &OS, const BasicBlock *BB) const; + inline void printBlockEquivalence(raw_ostream &OS, const BasicBlock *BB); + inline bool computeBlockWeights(Function &F); + inline void findEquivalenceClasses(Function &F); template - void findEquivalencesFor(BasicBlock *BB1, ArrayRef Descendants, - DominatorTreeBase *DomTree); - - void propagateWeights(Function &F); - uint64_t visitEdge(Edge E, unsigned *NumUnknownEdges, Edge *UnknownEdge); - void buildEdges(Function &F); + inline void + findEquivalencesFor(BasicBlock *BB1, ArrayRef Descendants, + DominatorTreeBase *DomTree); + + inline void propagateWeights(Function &F); + inline uint64_t visitEdge(Edge E, unsigned *NumUnknownEdges, + Edge *UnknownEdge); + inline void buildEdges(Function &F); std::vector buildFunctionOrder(Module &M, CallGraph *CG); - bool propagateThroughEdges(Function &F, bool UpdateBlockCount); + inline bool propagateThroughEdges(Function &F, bool UpdateBlockCount); void computeDominanceAndLoopInfo(Function &F); - void clearFunctionData(); - bool callsiteIsHot(const FunctionSamples *CallsiteFS, - ProfileSummaryInfo *PSI); + inline void clearFunctionData(); + inline bool callsiteIsHot(const FunctionSamples *CallsiteFS, + ProfileSummaryInfo *PSI); /// Map basic blocks to their computed weights. ///