16#ifndef LLVM_TRANSFORMS_UTILS_ASSUMEBUNDLEBUILDER_H
17#define LLVM_TRANSFORMS_UTILS_ASSUMEBUNDLEBUILDER_H
47 DominatorTree *DT =
nullptr);
53 AssumptionCache *AC =
nullptr,
54 DominatorTree *DT =
nullptr);
This header defines various interfaces for pass management in LLVM.
A container for analyses that lazily runs them and caches their results.
This represents the llvm.assume intrinsic.
A cache of @llvm.assume calls within a function.
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 optimization pass for GlobalISel generic memory operations.
cl::opt< bool > EnableKnowledgeRetention
RetainedKnowledge simplifyRetainedKnowledge(AssumeInst *Assume, RetainedKnowledge RK, AssumptionCache *AC, DominatorTree *DT)
canonicalize the RetainedKnowledge RK.
AssumeInst * buildAssumeFromKnowledge(ArrayRef< RetainedKnowledge > Knowledge, Instruction *CtxI, AssumptionCache *AC=nullptr, DominatorTree *DT=nullptr)
Build and return a new assume created from the provided knowledge if the knowledge in the assume is f...
bool salvageKnowledge(Instruction *I, AssumptionCache *AC=nullptr, DominatorTree *DT=nullptr)
Calls BuildAssumeFromInst and if the resulting llvm.assume is valid insert if before I.
AssumeInst * buildAssumeFromInst(Instruction *I)
Build a call to llvm.assume to preserve informations that can be derived from the given instruction.
This pass will try to build an llvm.assume for every instruction in the function.
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
This pass attempts to minimize the number of assume without loosing any information.
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
A CRTP mix-in to automatically provide informational APIs needed for passes.
Represent one information held inside an operand bundle of an llvm.assume.