14 #ifndef LLVM_TRANSFORMS_UTILS_SSAUPDATER_H 15 #define LLVM_TRANSFORMS_UTILS_SSAUPDATER_H 27 template <
typename T>
class SmallVectorImpl;
28 template <
typename T>
class SSAUpdaterTraits;
48 Type *ProtoType =
nullptr;
51 std::string ProtoName;
177 #endif // LLVM_TRANSFORMS_UTILS_SSAUPDATER_H Type
MessagePack types as defined in the standard, with the exception of Integer being divided into a sign...
Helper class for SSA formation on a set of values defined in multiple blocks.
This class represents lattice values for constants.
void Initialize(Type *Ty, StringRef Name)
Reset this object to get ready for a new set of SSA updates with type 'Ty'.
void AddAvailableValue(BasicBlock *BB, Value *V)
Indicate that a rewritten value is available in the specified block with the specified value...
An instruction for reading from memory.
amdgpu Simplify well known AMD library false Value Value const Twine & Name
A Use represents the edge between a Value definition and its users.
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
SSAUpdater & operator=(const SSAUpdater &)=delete
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Value * FindValueForBlock(BasicBlock *BB) const
Return the value for the specified block if the SSAUpdater has one, otherwise return nullptr...
Value * GetValueInMiddleOfBlock(BasicBlock *BB)
Construct SSA form, materializing a value that is live in the middle of the specified block...
LLVM Basic Block Representation.
The instances of the Type class are immutable: once they are created, they are never changed...
void RewriteUseAfterInsertions(Use &U)
Rewrite a use like RewriteUse but handling in-block definitions.
SSAUpdater(SmallVectorImpl< PHINode *> *InsertedPHIs=nullptr)
If InsertedPHIs is specified, it will be filled in with all PHI Nodes created by rewriting.
LLVM Value Representation.
StringRef - Represent a constant reference to a string, i.e.
Value * GetValueAtEndOfBlock(BasicBlock *BB)
Construct SSA form, materializing a value that is live at the end of the specified block...
void RewriteUse(Use &U)
Rewrite a use of the symbolic value.
bool HasValueForBlock(BasicBlock *BB) const
Return true if the SSAUpdater already has a value for the specified block.