13#ifndef LLVM_TRANSFORMS_UTILS_SSAUPDATER_H 
   14#define LLVM_TRANSFORMS_UTILS_SSAUPDATER_H 
   48  Type *ProtoType = 
nullptr;
 
   51  std::string ProtoName;
 
 
Class recording the (high level) value of a variable.
 
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
 
LLVM Basic Block Representation.
 
Record of a variable value-assignment, aka a non instruction representation of the dbg....
 
An instruction for reading from memory.
 
Helper class for SSA formation on a set of values defined in multiple blocks.
 
void RewriteUse(Use &U)
Rewrite a use of the symbolic value.
 
void RewriteUseAfterInsertions(Use &U)
Rewrite a use like RewriteUse but handling in-block definitions.
 
Value * FindValueForBlock(BasicBlock *BB) const
Return the value for the specified block if the SSAUpdater has one, otherwise return nullptr.
 
SSAUpdater & operator=(const SSAUpdater &)=delete
 
void Initialize(Type *Ty, StringRef Name)
Reset this object to get ready for a new set of SSA updates with type 'Ty'.
 
Value * GetValueInMiddleOfBlock(BasicBlock *BB)
Construct SSA form, materializing a value that is live in the middle of the specified block.
 
SSAUpdater(SmallVectorImpl< PHINode * > *InsertedPHIs=nullptr)
If InsertedPHIs is specified, it will be filled in with all PHI Nodes created by rewriting.
 
void UpdateDebugValues(Instruction *I)
Rewrite debug value intrinsics to conform to a new SSA form.
 
SSAUpdater(const SSAUpdater &)=delete
 
bool HasValueForBlock(BasicBlock *BB) const
Return true if the SSAUpdater already has a value for the specified block.
 
Value * GetValueAtEndOfBlock(BasicBlock *BB)
Construct SSA form, materializing a value that is live at the end of the specified block.
 
void AddAvailableValue(BasicBlock *BB, Value *V)
Indicate that a rewritten value is available in the specified block with the specified value.
 
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
 
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.
 
This is an optimization pass for GlobalISel generic memory operations.