15#ifndef LLVM_CODEGEN_BASICBLOCKSECTIONSPROFILEREADER_H
16#define LLVM_CODEGEN_BASICBLOCKSECTIONSPROFILEREADER_H
70 return It->second.lookup(SinkBBID);
92 : MBuf(Buf), LineIt(*Buf,
true,
'#'){};
115 auto It = ProgramOptimizationProfile.find(getAliasName(FuncName));
116 if (It == ProgramOptimizationProfile.end())
118 return &It->second.CFG;
123 auto R = FuncAliasMap.find(FuncName);
124 return R == FuncAliasMap.end() ? FuncName : R->second;
128 Error createProfileParseError(Twine Message)
const {
139 Expected<UniqueBBID> parseUniqueBBID(StringRef S)
const;
146 Error ReadV0Profile();
149 Error ReadV1Profile();
152 const MemoryBuffer *MBuf =
nullptr;
155 line_iterator LineIt;
159 StringMap<SmallString<128>> FunctionNameToDIFilename;
165 StringMap<FunctionOptimizationProfile> ProgramOptimizationProfile;
169 StringMap<StringRef> FuncAliasMap;
214 return "Basic Block Sections Profile Reader";
This file defines the StringMap class.
Module.h This file contains the declarations for the Module class.
This header defines various interfaces for pass management in LLVM.
This file defines the SmallString class.
This file defines the SmallVector class.
BasicBlockSectionsProfileReaderAnalysis(const TargetMachine &TM)
BasicBlockSectionsProfileReader Result
Result run(Function &F, FunctionAnalysisManager &AM)
bool doInitialization(Module &M) override
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before ...
BasicBlockSectionsProfileReader BBSPR
BasicBlockSectionsProfileReader & getBBSPR()
SmallVector< SmallVector< unsigned > > getClonePathsForFunction(StringRef FuncName) const
SmallVector< BBClusterInfo > getClusterInfoForFunction(StringRef FuncName) const
const CFGProfile * getFunctionCFGProfile(StringRef FuncName) const
bool isFunctionHot(StringRef FuncName) const
BasicBlockSectionsProfileReaderWrapperPass()
uint64_t getEdgeCount(StringRef FuncName, const UniqueBBID &SrcBBID, const UniqueBBID &DestBBID) const
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
BasicBlockSectionsProfileReaderWrapperPass(const MemoryBuffer *Buf)
friend class BasicBlockSectionsProfileReaderWrapperPass
bool isFunctionHot(StringRef FuncName) const
SmallVector< SmallVector< unsigned > > getClonePathsForFunction(StringRef FuncName) const
const CFGProfile * getFunctionCFGProfile(StringRef FuncName) const
uint64_t getEdgeCount(StringRef FuncName, const UniqueBBID &SrcBBID, const UniqueBBID &DestBBID) const
BasicBlockSectionsProfileReader(const MemoryBuffer *Buf)
BasicBlockSectionsProfileReader()=default
SmallVector< BBClusterInfo > getClusterInfoForFunction(StringRef FuncName) const
ImmutablePass class - This class is used to provide information that does not need to be run.
This interface provides simple read-only access to a block of memory, and provides simple methods for...
virtual StringRef getBufferIdentifier() const
Return an identifier for this buffer, typically the filename it was read from.
A Module instance is used to store all the information related to an LLVM module.
static LLVM_ABI PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
Primary interface to the complete machine description for the target machine.
int64_t line_number() const
Return the current line number. May return any number at EOF.
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI void initializeBasicBlockSectionsProfileReaderWrapperPassPass(PassRegistry &)
LLVM_ABI std::error_code inconvertibleErrorCode()
The value returned by this function can be returned from convertToErrorCode for Error values where no...
ImmutablePass * createBasicBlockSectionsProfileReaderWrapperPass(const MemoryBuffer *Buf)
Error make_error(ArgTs &&... Args)
Make a Error instance representing failure using the given error info type.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
A CRTP mix-in that provides informational APIs needed for analysis passes.
A special type used by analysis passes to provide an address that identifies that particular analysis...
unsigned PositionInCluster
DenseMap< unsigned, uint64_t > BBHashes
DenseMap< UniqueBBID, uint64_t > NodeCounts
DenseMap< UniqueBBID, DenseMap< UniqueBBID, uint64_t > > EdgeCounts
uint64_t getEdgeCount(const UniqueBBID &SrcBBID, const UniqueBBID &SinkBBID) const
uint64_t getBlockCount(const UniqueBBID &BBID) const
SmallVector< BBClusterInfo > ClusterInfo
SmallVector< SmallVector< unsigned > > ClonePaths