[PATCH] D95832: [SampleFDO][NFC] Add inline keywords to member functions that will be in the template header file

Rong Xu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 1 15:51:59 PST 2021


xur created this revision.
xur added reviewers: davidxl, wmi, wenlei.
Herald added a subscriber: hiraditya.
xur requested review of this revision.
Herald added a project: LLVM.

his is split from patch https://reviews.llvm.org/D95698

This patch adds an "inline" keyword to all the functions that will be placed into template header, unless they are already defined in class. Those not inlined functions will be specialized in IR Pass or Machine Pass implementation (in the .cpp files).


https://reviews.llvm.org/D95832

Files:
  llvm/lib/Transforms/IPO/SampleProfile.cpp


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<uint64_t> getInstWeight(const Instruction &I);
+  inline ErrorOr<uint64_t> getInstWeight(const Instruction &I);
   ErrorOr<uint64_t> getProbeWeight(const Instruction &I);
-  ErrorOr<uint64_t> getBlockWeight(const BasicBlock *BB);
+  inline ErrorOr<uint64_t> getBlockWeight(const BasicBlock *BB);
   const FunctionSamples *findCalleeFunctionSamples(const CallBase &I) const;
   std::vector<const FunctionSamples *>
   findIndirectCallFunctionSamples(const Instruction &I, uint64_t &Sum) const;
-  mutable DenseMap<const DILocation *, const FunctionSamples *> DILocation2SampleMap;
-  const FunctionSamples *findFunctionSamples(const Instruction &I) const;
+  mutable DenseMap<const DILocation *, const FunctionSamples *>
+      DILocation2SampleMap;
+  inline const FunctionSamples *findFunctionSamples(const Instruction &I) const;
   bool inlineCallInstruction(CallBase &CB);
   bool inlineHotFunctions(Function &F,
                           DenseSet<GlobalValue::GUID> &InlinedGUIDs);
@@ -358,24 +359,26 @@
   void emitOptimizationRemarksForInlineCandidates(
       const SmallVectorImpl<CallBase *> &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 <bool IsPostDom>
-  void findEquivalencesFor(BasicBlock *BB1, ArrayRef<BasicBlock *> Descendants,
-                           DominatorTreeBase<BasicBlock, IsPostDom> *DomTree);
-
-  void propagateWeights(Function &F);
-  uint64_t visitEdge(Edge E, unsigned *NumUnknownEdges, Edge *UnknownEdge);
-  void buildEdges(Function &F);
+  inline void
+  findEquivalencesFor(BasicBlock *BB1, ArrayRef<BasicBlock *> Descendants,
+                      DominatorTreeBase<BasicBlock, IsPostDom> *DomTree);
+
+  inline void propagateWeights(Function &F);
+  inline uint64_t visitEdge(Edge E, unsigned *NumUnknownEdges,
+                            Edge *UnknownEdge);
+  inline void buildEdges(Function &F);
   std::vector<Function *> 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.
   ///


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D95832.320629.patch
Type: text/x-patch
Size: 4753 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210201/dbcf152b/attachment.bin>


More information about the llvm-commits mailing list