46 bool runOnModule(
Module &M)
override {
51 &getAnalysis<TargetLibraryInfoWrapperPass>().getTLI();
55 this->getAnalysis<DominatorTreeWrapperPass>(
F).getDomTree();
57 make_unique<PredicateInfo>(
59 this->getAnalysis<AssumptionCacheTracker>().getAssumptionCache(
65 return runIPSCCP(M, DL, TLI, getAnalysis);
80 "Interprocedural Sparse Conditional Constant Propagation",
A parsed version of the target data layout string in and methods for querying it. ...
static PassRegistry * getPassRegistry()
getPassRegistry - Access the global registry object, which is automatically initialized at applicatio...
Interprocedural Sparse Conditional Constant Propagation
PassT::Result & getResult(IRUnitT &IR, ExtraArgTs... ExtraArgs)
Get the result of an analysis pass for a given IR unit.
This class represents lattice values for constants.
A Module instance is used to store all the information related to an LLVM module. ...
An immutable pass that tracks lazily created AssumptionCache objects.
ModulePass * createIPSCCPPass()
createIPSCCPPass - This pass propagates constants from call sites into the bodies of functions...
Analysis pass which computes a DominatorTree.
AnalysisUsage & addRequired()
#define INITIALIZE_PASS_DEPENDENCY(depName)
const DataLayout & getDataLayout() const
Get the data layout for the module's target platform.
Helper struct for bundling up the analysis results per function for IPSCCP.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree...
A set of analyses that are preserved following a run of a transformation pass.
This is an important base class in LLVM.
Represent the analysis usage information of a pass.
static PreservedAnalyses all()
Construct a special preserved set that preserves all passes.
INITIALIZE_PASS_END(RegBankSelect, DEBUG_TYPE, "Assign register bank of generic virtual registers", false, false) RegBankSelect
A function analysis which provides an AssumptionCache.
INITIALIZE_PASS_BEGIN(IPSCCPLegacyPass, "ipsccp", "Interprocedural Sparse Conditional Constant Propagation", false, false) INITIALIZE_PASS_END(IPSCCPLegacyPass
Analysis pass which computes a PostDominatorTree.
Provides information about what library functions are available for the current target.
PreservedAnalyses run(Module &M, ModuleAnalysisManager &AM)
void initializeIPSCCPLegacyPassPass(PassRegistry &)
ModulePass class - This class is used to implement unstructured interprocedural optimizations and ana...
void preserve()
Mark an analysis as preserved.
Analysis pass providing the TargetLibraryInfo.
bool runIPSCCP(Module &M, const DataLayout &DL, const TargetLibraryInfo *TLI, function_ref< AnalysisResultsForFn(Function &)> getAnalysis)
A container for analyses that lazily runs them and caches their results.
Legacy analysis pass which computes a DominatorTree.
An analysis over an "outer" IR unit that provides access to an analysis manager over an "inner" IR un...