30#ifndef LLVM_ANALYSIS_LASTRUNTRACKINGANALYSIS_H
31#define LLVM_ANALYSIS_LASTRUNTRACKINGANALYSIS_H
40struct AnalysisOptions;
49class LastRunTrackingInfo {
62 template <
typename OptionT>
64 return shouldSkipImpl(ID, &Opt);
75 template <
typename OptionT>
78 return static_cast<const OptionT *
>(Ptr)->isCompatibleWith(Opt);
87 explicit LastRunTrackingInfo(
const AnalysisOptions &Opts) : Opts(Opts) {}
93 const AnalysisOptions &Opts;
This file defines the DenseMap class.
This header defines various interfaces for pass management in LLVM.
A function/module analysis which provides an empty LastRunTrackingInfo.
LLVM_ABI LastRunTrackingInfo run(Function &F, FunctionAnalysisManager &)
LastRunTrackingInfo Result
This class is used to track the last run of a set of module/function passes.
std::function< bool(OptionPtr)> CompatibilityCheckFn
bool shouldSkip(PassID ID) const
friend class LastRunTrackingAnalysis
void update(PassID ID, bool Changed, const OptionT &Opt)
Update the tracking info.
bool shouldSkip(PassID ID, const OptionT &Opt) const
Check if we should skip a pass.
void update(PassID ID, bool Changed)
A Module instance is used to store all the information related to an LLVM module.
This is an optimization pass for GlobalISel generic memory operations.
AnalysisManager< Function > FunctionAnalysisManager
Convenience typedef for the Function analysis manager.
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module 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...