31#ifdef EXPENSIVE_CHECKS
147 const std::string &Banner)
const = 0;
155 virtual void preparePassManager(
PMStack &);
180 virtual void releaseMemory();
187 virtual void verifyAnalysis()
const;
190 virtual void dumpPassStructure(
unsigned Offset = 0);
194 static const PassInfo *lookupPassInfo(
const void *TI);
211 template<
typename AnalysisType> AnalysisType *
212 getAnalysisIfAvailable()
const;
219 bool mustPreserveAnalysisID(
char &AID)
const;
224 template<
typename AnalysisType>
225 AnalysisType &getAnalysis()
const;
227 template <
typename AnalysisType>
232 template<
typename AnalysisType>
233 AnalysisType &getAnalysisID(
AnalysisID PI)
const;
235 template <
typename AnalysisType>
239#ifdef EXPENSIVE_CHECKS
264 const std::string &Banner)
const override;
320 const std::string &Banner)
const override;
aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late Phase
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
AnalysisResolver - Simple interface used by Pass objects to pull all analysis information out of pass...
Represent the analysis usage information of a pass.
PassManagerType getPotentialPassManagerType() const override
Return what kind of Pass Manager can manage this pass.
void assignPassManager(PMStack &PMS, PassManagerType T) override
Find appropriate Function Pass Manager or Call Graph Pass Manager in the PM Stack and add self into t...
virtual bool runOnFunction(Function &F)=0
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
bool skipFunction(const Function &F) const
Optional passes call this function to check whether the pass should be skipped.
ImmutablePass class - This class is used to provide information that does not need to be run.
~ImmutablePass() override
ImmutablePass * getAsImmutablePass() override
virtual void initializePass()
initializePass - This method may be overriden by immutable passes to allow them to perform various in...
bool runOnModule(Module &) override
ImmutablePasses are never run.
PassManagerType getPotentialPassManagerType() const override
Return what kind of Pass Manager can manage this pass.
bool skipModule(const Module &M) const
Optional passes call this function to check whether the pass should be skipped.
void assignPassManager(PMStack &PMS, PassManagerType T) override
Find appropriate Module Pass Manager in the PM Stack and add self into that manager.
virtual bool runOnModule(Module &M)=0
runOnModule - Virtual method overriden by subclasses to process the module being operated on.
Pass * createPrinterPass(raw_ostream &OS, const std::string &Banner) const override
createPrinterPass - Get a module printer pass.
A Module instance is used to store all the information related to an LLVM module.
PMDataManager provides the common place to manage the analysis data used by pass managers.
PMStack - This class implements a stack data structure of PMDataManager pointers.
PassInfo class - An instance of this class exists for every pass known by the system,...
Pass interface - Implemented by all 'passes'.
Pass(PassKind K, char &pid)
AnalysisID getPassID() const
getPassID - Return the PassID number that corresponds to this pass.
virtual void assignPassManager(PMStack &, PassManagerType)
Each pass is responsible for assigning a pass manager to itself.
AnalysisResolver * getResolver() const
PassKind getPassKind() const
virtual bool doInitialization(Module &)
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before ...
virtual Pass * createPrinterPass(raw_ostream &OS, const std::string &Banner) const =0
createPrinterPass - Get a Pass appropriate to print the IR this pass operates on (Module,...
virtual bool doFinalization(Module &)
doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes...
Pass(const Pass &)=delete
Pass & operator=(const Pass &)=delete
StringRef - Represent a constant reference to a string, i.e.
This class implements an extremely fast bulk output stream that can only output to a stream.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
This is an optimization pass for GlobalISel generic memory operations.
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
PassManagerType
Different types of internal pass managers.
@ PMT_LoopPassManager
LPPassManager.
@ PMT_RegionPassManager
RGPassManager.
@ PMT_CallGraphPassManager
CGPassManager.
@ PMT_ModulePassManager
MPPassManager.
@ PMT_FunctionPassManager
FPPassManager.
LLVM_ABI bool TimePassesIsEnabled
If the user specifies the -time-passes argument on an LLVM tool command line then the value of this b...
LLVM_ABI bool TimePassesPerRun
If TimePassesPerRun is true, there would be one line of report for each pass invocation.
ThinOrFullLTOPhase
This enumerates the LLVM full LTO or ThinLTO optimization phases.
@ FullLTOPreLink
Full LTO prelink phase.
@ ThinLTOPostLink
ThinLTO postlink (backend compile) phase.
@ FullLTOPostLink
Full LTO postlink (backend compile) phase.
@ ThinLTOPreLink
ThinLTO prelink (summary) phase.
const char * to_string(ThinOrFullLTOPhase Phase)