51 #ifndef LLVM_TRANSFORMS_UTILS_PREDICATEINFO_H 52 #define LLVM_TRANSFORMS_UTILS_PREDICATEINFO_H 137 AssumeInst(AssumeInst) {}
168 Value *Condition,
bool TakenEdge)
170 TrueEdge(TakenEdge) {}
186 CaseValue(CaseValue), Switch(SI) {}
194 namespace PredicateInfoClasses {
217 void verifyPredicateInfo()
const;
223 return PredicateMap.lookup(V);
232 void buildPredicateInfo();
240 Value *materializeStack(
unsigned int &, ValueDFSStack &,
Value *);
241 bool stackIsInScope(
const ValueDFSStack &,
const ValueDFS &)
const;
242 void popStackUntilDFSScope(ValueDFSStack &,
const ValueDFS &);
243 ValueInfo &getOrCreateValueInfo(
Value *);
246 const ValueInfo &getValueInfo(
Value *)
const;
299 #endif // LLVM_TRANSFORMS_UTILS_PREDICATEINFO_H
static bool classof(const PredicateBase *PB)
This class represents lattice values for constants.
Implements a dense probed hash-table based set.
PredicateWithCondition(PredicateType PT, Value *Op, Value *Condition)
PredicateBase & operator=(const PredicateBase &)=delete
A cache of @llvm.assume calls within a function.
This defines the Use class.
Verifier pass for PredicateInfo.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
PredicateBranch(Value *Op, BasicBlock *BranchBB, BasicBlock *SplitBB, Value *Condition, bool TakenEdge)
A CRTP mix-in to automatically provide informational APIs needed for passes.
static bool classof(const PredicateBase *PB)
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree...
PredicateInfoPrinterPass(raw_ostream &OS)
PredicateAssume(Value *Op, IntrinsicInst *AssumeInst, Value *Condition)
PredicateSwitch(Value *Op, BasicBlock *SwitchBB, BasicBlock *TargetBB, Value *CaseValue, SwitchInst *SI)
static bool classof(const PredicateBase *PB)
static bool runOnFunction(Function &F, bool PostInlining)
void dump(const SparseBitVector< ElementSize > &LHS, raw_ostream &out)
A set of analyses that are preserved following a run of a transformation pass.
LLVM Basic Block Representation.
Conditional or Unconditional Branch instruction.
virtual ~PredicateBase()=default
PredicateBase(PredicateType PT, Value *Op)
Printer pass for PredicateInfo.
SmallSet - This maintains a set of unique values, optimizing for the case when the set is small (less...
Represent the analysis usage information of a pass.
FunctionPass class - This class is used to implement most global optimizations.
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
An intrusive list with ownership and callbacks specified/controlled by ilist_traits, only with API safe for polymorphic types.
static bool classof(const PredicateBase *PB)
PredicateWithEdge(PredicateType PType, Value *Op, BasicBlock *From, BasicBlock *To, Value *Cond)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
Module.h This file contains the declarations for the Module class.
Encapsulates PredicateInfo, including all data associated with memory accesses.
const PredicateBase * getPredicateInfoFor(const Value *V) const
An assembly annotator class to print PredicateInfo information in comments.
LLVM Value Representation.
static bool classof(const PredicateBase *PB)
This class implements an extremely fast bulk output stream that can only output to a stream...
A container for analyses that lazily runs them and caches their results.
IntrinsicInst * AssumeInst
A wrapper class for inspecting calls to intrinsic functions.