class MemoryUseOrDef
Declaration
class MemoryUseOrDef : public MemoryAccess { /* full declaration omitted */ };
Description
Class that has the common methods + fields of memory uses/defs. It's a little awkward to have, but there are many cases where we want either a use or def, and there are many cases where uses are needed (defs aren't acceptable), and vice-versa. This class should never be instantiated directly; make a MemoryUse or MemoryDef instead.
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:248
Inherits from: MemoryAccess
Member Variables
Inherited from Value:
- protected SubclassOptionalData
- protected NumUserOperands
- protected IsUsedByMD
- protected HasName
- protected HasHungOffUses
- protected HasDescriptor
- public static MaxAlignmentExponent = 29
- public static MaximumAlignment = 1U << MaxAlignmentExponent
Method Overview
- protected MemoryUseOrDef(llvm::LLVMContext & C, llvm::MemoryAccess * DMA, unsigned int Vty, llvm::DerivedUser::DeleteValueTy DeleteValue, llvm::Instruction * MI, llvm::BasicBlock * BB, unsigned int NumOperands)
- public static bool classof(const llvm::Value * MA)
- public llvm::MemoryAccess * getDefiningAccess() const
- public llvm::Instruction * getMemoryInst() const
- public inline llvm::MemoryAccess * getOptimized() const
- public Optional<llvm::AliasResult> getOptimizedAccessType() const
- public inline bool isOptimized() const
- public inline void resetOptimized()
- protected void setDefiningAccess(llvm::MemoryAccess * DMA, bool Optimized = false, Optional<llvm::AliasResult> AR = MayAlias)
- public inline void setOptimized(llvm::MemoryAccess *)
- protected void setOptimizedAccessType(Optional<llvm::AliasResult> AR)
- protected ~MemoryUseOrDef()
Inherited from MemoryAccess:
- public classof
- public defs_begin
- public defs_begin
- public defs_end
- public defs_end
- public dump
- public getBlock
- public getDefsIterator
- public getDefsIterator
- protected getID
- public getIterator
- public getIterator
- public getReverseDefsIterator
- public getReverseDefsIterator
- public getReverseIterator
- public getReverseIterator
- public print
- protected setBlock
Inherited from DerivedUser:
Inherited from User:
- protected Op
- protected Op
- protected OpFrom
- protected allocHungoffUses
- public classof
- public dropAllReferences
- public getDescriptor
- public getDescriptor
- public getNumOperands
- public getOperand
- public getOperandList
- public getOperandList
- public getOperandUse
- public getOperandUse
- protected growHungoffUses
- public op_begin
- public op_begin
- public op_end
- public op_end
- public operand_values
- public operand_values
- public operands
- public operands
- public replaceUsesOfWith
- public setGlobalVariableNumOperands
- public setNumHungOffUseOperands
- public setOperand
- public value_op_begin
- public value_op_begin
- public value_op_end
- public value_op_end
Inherited from Value:
- public DoPHITranslation
- public DoPHITranslation
- public addUse
- public assertModuleIsMaterialized
- public assertModuleIsMaterializedImpl
- public clearSubclassOptionalData
- public deleteValue
- public dump
- public getContext
- public getName
- public getNumUses
- public getPointerAlignment
- public getPointerDereferenceableBytes
- public getRawSubclassOptionalData
- protected getSubclassDataFromValue
- public getType
- public getValueID
- public getValueName
- public hasNUses
- public hasNUsesOrMore
- public hasName
- public hasOneUse
- public hasSameSubclassOptionalData
- public hasValueHandle
- public isSwiftError
- public isUsedByMetadata
- public isUsedInBasicBlock
- public materialized_use_begin
- public materialized_use_begin
- public materialized_use_empty
- public materialized_user_begin
- public materialized_user_begin
- public materialized_users
- public materialized_users
- public materialized_uses
- public materialized_uses
- public mutateType
- public print
- public print
- public printAsOperand
- public printAsOperand
- public replaceAllUsesWith
- public replaceNonMetadataUsesWith
- public replaceUsesOutsideBlock
- public replaceUsesWithIf
- public reverseUseList
- public setName
- public setValueName
- protected setValueSubclassData
- public sortUseList
- public stripAndAccumulateConstantOffsets
- public stripAndAccumulateConstantOffsets
- public stripAndAccumulateInBoundsConstantOffsets
- public stripAndAccumulateInBoundsConstantOffsets
- public stripInBoundsConstantOffsets
- public stripInBoundsConstantOffsets
- public stripInBoundsOffsets
- public stripInBoundsOffsets
- public stripPointerCasts
- public stripPointerCasts
- public stripPointerCastsAndAliases
- public stripPointerCastsAndAliases
- public stripPointerCastsAndInvariantGroups
- public stripPointerCastsAndInvariantGroups
- public stripPointerCastsSameRepresentation
- public stripPointerCastsSameRepresentation
- public takeName
- public use_begin
- public use_begin
- public use_empty
- public use_end
- public use_end
- public user_back
- public user_back
- public user_begin
- public user_begin
- public user_empty
- public user_end
- public user_end
- public users
- public users
- public uses
- public uses
Methods
¶MemoryUseOrDef(
llvm::LLVMContext& C,
llvm::MemoryAccess* DMA,
unsigned int Vty,
llvm::DerivedUser::DeleteValueTy DeleteValue,
llvm::Instruction* MI,
llvm::BasicBlock* BB,
unsigned int NumOperands)
MemoryUseOrDef(
llvm::LLVMContext& C,
llvm::MemoryAccess* DMA,
unsigned int Vty,
llvm::DerivedUser::DeleteValueTy DeleteValue,
llvm::Instruction* MI,
llvm::BasicBlock* BB,
unsigned int NumOperands)
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:285
Parameters
- llvm::LLVMContext& C
- llvm::MemoryAccess* DMA
- unsigned int Vty
- llvm::DerivedUser::DeleteValueTy DeleteValue
- llvm::Instruction* MI
- llvm::BasicBlock* BB
- unsigned int NumOperands
¶static bool classof(const llvm::Value* MA)
static bool classof(const llvm::Value* MA)
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:260
Parameters
- const llvm::Value* MA
¶llvm::MemoryAccess* getDefiningAccess() const
llvm::MemoryAccess* getDefiningAccess() const
Description
Get the access that produces the memory state used by this Use.
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:258
¶llvm::Instruction* getMemoryInst() const
llvm::Instruction* getMemoryInst() const
Description
Get the instruction that this MemoryUse represents.
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:255
¶inline llvm::MemoryAccess* getOptimized() const
inline llvm::MemoryAccess* getOptimized() const
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:267
¶Optional<llvm::AliasResult>
getOptimizedAccessType() const
Optional<llvm::AliasResult>
getOptimizedAccessType() const
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:272
¶inline bool isOptimized() const
inline bool isOptimized() const
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:266
¶inline void resetOptimized()
inline void resetOptimized()
Description
Reset the ID of what this MemoryUse was optimized to, causing it to be rewalked by the walker if necessary. This really should only be called by tests.
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:279
¶void setDefiningAccess(
llvm::MemoryAccess* DMA,
bool Optimized = false,
Optional<llvm::AliasResult> AR = MayAlias)
void setDefiningAccess(
llvm::MemoryAccess* DMA,
bool Optimized = false,
Optional<llvm::AliasResult> AR = MayAlias)
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:300
Parameters
- llvm::MemoryAccess* DMA
- bool Optimized = false
- Optional<llvm::AliasResult> AR = MayAlias
¶inline void setOptimized(llvm::MemoryAccess*)
inline void setOptimized(llvm::MemoryAccess*)
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:268
Parameters
¶void setOptimizedAccessType(
Optional<llvm::AliasResult> AR)
void setOptimizedAccessType(
Optional<llvm::AliasResult> AR)
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:296
Parameters
- Optional<llvm::AliasResult> AR
¶~MemoryUseOrDef()
~MemoryUseOrDef()
Declared at: llvm/include/llvm/Analysis/MemorySSA.h:294