31#ifdef EXPENSIVE_CHECKS
39class AnalysisResolver;
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>
230 bool *Changed =
nullptr);
232 template<
typename AnalysisType>
233 AnalysisType &getAnalysisID(
AnalysisID PI)
const;
235 template <
typename AnalysisType>
237 bool *Changed =
nullptr);
239#ifdef EXPENSIVE_CHECKS
264 const std::string &Banner)
const override;
278 bool skipModule(
const Module &M)
const;
297 virtual void initializePass();
320 const std::string &Banner)
const override;
335 bool skipFunction(
const Function &
F)
const;
aarch64 falkor hwpf fix Falkor HW Prefetch Fix Late Phase
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
Machine Check Debug Module
AnalysisResolver - Simple interface used by Pass objects to pull all analysis information out of pass...
Represent the analysis usage information of a pass.
FunctionPass class - This class is used to implement most global optimizations.
virtual bool runOnFunction(Function &F)=0
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
ImmutablePass class - This class is used to provide information that does not need to be run.
~ImmutablePass() override
ImmutablePass * getAsImmutablePass() override
bool runOnModule(Module &) override
ImmutablePasses are never run.
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
virtual bool runOnModule(Module &M)=0
runOnModule - Virtual method overriden by subclasses to process the module being operated on.
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
Interface for looking up the initializer for a variable name, used by Init::resolveReferences.
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.
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)