13#ifndef LLVM_TRANSFORMS_UTILS_SSAUPDATERBULK_H
14#define LLVM_TRANSFORMS_UTILS_SSAUPDATERBULK_H
24template <
typename T>
class SmallVectorImpl;
45 RewriteInfo() =
default;
This file defines the DenseMap class.
Rewrite Partial Register Uses
LLVM Basic Block Representation.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
PredIteratorCache - This class is an extremely trivial cache for predecessor iterator queries.
Helper class for SSA formation on a set of values defined in multiple blocks.
SSAUpdaterBulk & operator=(const SSAUpdaterBulk &)=delete
~SSAUpdaterBulk()=default
unsigned AddVariable(StringRef Name, Type *Ty)
Add a new variable to the SSA rewriter.
void AddAvailableValue(unsigned Var, BasicBlock *BB, Value *V)
Indicate that a rewritten value is available in the specified block with the specified value.
void RewriteAllUses(DominatorTree *DT, SmallVectorImpl< PHINode * > *InsertedPHIs=nullptr)
Perform all the necessary updates, including new PHI-nodes insertion and the requested uses update.
SSAUpdaterBulk(const SSAUpdaterBulk &)=delete
void AddUse(unsigned Var, Use *U)
Record a use of the symbolic value.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
A Use represents the edge between a Value definition and its users.
LLVM Value Representation.
@ BasicBlock
Various leaf nodes.
NodeAddr< UseNode * > Use
This is an optimization pass for GlobalISel generic memory operations.