class MemoryLocation
Declaration
class MemoryLocation { /* full declaration omitted */ };
Description
Representation for a specific memory location. This abstraction can be used to represent a specific location in memory. The goal of the location is to represent enough information to describe abstract aliasing, modification, and reference behaviors of whatever value(s) are stored in memory at the particular location. The primary user of this interface is LLVM's Alias Analysis, but other memory analyses such as MemoryDependence can use it as well.
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:174
Member Variables
- public const llvm::Value* Ptr
- The address of the start of the location.
- public llvm::LocationSize Size
- Note that an unknown size does not mean the pointer aliases the entire virtual address space, because there are restrictions on stepping out of one object and into another. See http://llvm.org/docs/LangRef.html#pointeraliasing
- public llvm::AAMDNodes AATags
- The metadata nodes which describes the aliasing of the location (each member is null if that kind of information is unavailable).
Method Overview
- public MemoryLocation(const llvm::Value * Ptr = nullptr, llvm::LocationSize Size = LocationSize::unknown(), const llvm::AAMDNodes & AATags = llvm::AAMDNodes())
- public static llvm::MemoryLocation get(const llvm::StoreInst * SI)
- public static llvm::MemoryLocation get(const llvm::VAArgInst * VI)
- public static llvm::MemoryLocation get(const llvm::AtomicCmpXchgInst * CXI)
- public static llvm::MemoryLocation get(const llvm::AtomicRMWInst * RMWI)
- public static llvm::MemoryLocation get(const llvm::Instruction * Inst)
- public static llvm::MemoryLocation get(const llvm::LoadInst * LI)
- public static llvm::MemoryLocation getForArgument(const llvm::CallBase * Call, unsigned int ArgIdx, const llvm::TargetLibraryInfo & TLI)
- public static llvm::MemoryLocation getForArgument(const llvm::CallBase * Call, unsigned int ArgIdx, const llvm::TargetLibraryInfo * TLI)
- public static llvm::MemoryLocation getForDest(const llvm::MemIntrinsic * MI)
- public static llvm::MemoryLocation getForDest(const llvm::AtomicMemIntrinsic * MI)
- public static llvm::MemoryLocation getForDest(const llvm::AnyMemIntrinsic * MI)
- public static llvm::MemoryLocation getForSource(const llvm::AnyMemTransferInst * MTI)
- public static llvm::MemoryLocation getForSource(const llvm::AtomicMemTransferInst * MTI)
- public static llvm::MemoryLocation getForSource(const llvm::MemTransferInst * MTI)
- public static Optional<llvm::MemoryLocation> getOrNone(const llvm::Instruction * Inst)
- public llvm::MemoryLocation getWithNewPtr(const llvm::Value * NewPtr) const
- public llvm::MemoryLocation getWithNewSize(llvm::LocationSize NewSize) const
- public llvm::MemoryLocation getWithoutAATags() const
Methods
¶MemoryLocation(const llvm::Value* Ptr = nullptr,
llvm::LocationSize Size =
LocationSize::unknown(),
const llvm::AAMDNodes& AATags =
llvm::AAMDNodes())
MemoryLocation(const llvm::Value* Ptr = nullptr,
llvm::LocationSize Size =
LocationSize::unknown(),
const llvm::AAMDNodes& AATags =
llvm::AAMDNodes())
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:243
Parameters
- const llvm::Value* Ptr = nullptr
- llvm::LocationSize Size = LocationSize::unknown()
- const llvm::AAMDNodes& AATags = llvm::AAMDNodes()
¶static llvm::MemoryLocation get(
const llvm::StoreInst* SI)
static llvm::MemoryLocation get(
const llvm::StoreInst* SI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:200
Parameters
- const llvm::StoreInst* SI
¶static llvm::MemoryLocation get(
const llvm::VAArgInst* VI)
static llvm::MemoryLocation get(
const llvm::VAArgInst* VI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:201
Parameters
- const llvm::VAArgInst* VI
¶static llvm::MemoryLocation get(
const llvm::AtomicCmpXchgInst* CXI)
static llvm::MemoryLocation get(
const llvm::AtomicCmpXchgInst* CXI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:202
Parameters
- const llvm::AtomicCmpXchgInst* CXI
¶static llvm::MemoryLocation get(
const llvm::AtomicRMWInst* RMWI)
static llvm::MemoryLocation get(
const llvm::AtomicRMWInst* RMWI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:203
Parameters
- const llvm::AtomicRMWInst* RMWI
¶static llvm::MemoryLocation get(
const llvm::Instruction* Inst)
static llvm::MemoryLocation get(
const llvm::Instruction* Inst)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:204
Parameters
- const llvm::Instruction* Inst
¶static llvm::MemoryLocation get(
const llvm::LoadInst* LI)
static llvm::MemoryLocation get(
const llvm::LoadInst* LI)
Description
Return a location with information about the memory reference by the given instruction.
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:199
Parameters
- const llvm::LoadInst* LI
¶static llvm::MemoryLocation getForArgument(
const llvm::CallBase* Call,
unsigned int ArgIdx,
const llvm::TargetLibraryInfo& TLI)
static llvm::MemoryLocation getForArgument(
const llvm::CallBase* Call,
unsigned int ArgIdx,
const llvm::TargetLibraryInfo& TLI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:238
Parameters
- const llvm::CallBase* Call
- unsigned int ArgIdx
- const llvm::TargetLibraryInfo& TLI
¶static llvm::MemoryLocation getForArgument(
const llvm::CallBase* Call,
unsigned int ArgIdx,
const llvm::TargetLibraryInfo* TLI)
static llvm::MemoryLocation getForArgument(
const llvm::CallBase* Call,
unsigned int ArgIdx,
const llvm::TargetLibraryInfo* TLI)
Description
Return a location representing a particular argument of a call.
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:236
Parameters
- const llvm::CallBase* Call
- unsigned int ArgIdx
- const llvm::TargetLibraryInfo* TLI
¶static llvm::MemoryLocation getForDest(
const llvm::MemIntrinsic* MI)
static llvm::MemoryLocation getForDest(
const llvm::MemIntrinsic* MI)
Description
Return a location representing the destination of a memory set or transfer.
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:231
Parameters
- const llvm::MemIntrinsic* MI
¶static llvm::MemoryLocation getForDest(
const llvm::AtomicMemIntrinsic* MI)
static llvm::MemoryLocation getForDest(
const llvm::AtomicMemIntrinsic* MI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:232
Parameters
- const llvm::AtomicMemIntrinsic* MI
¶static llvm::MemoryLocation getForDest(
const llvm::AnyMemIntrinsic* MI)
static llvm::MemoryLocation getForDest(
const llvm::AnyMemIntrinsic* MI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:233
Parameters
- const llvm::AnyMemIntrinsic* MI
¶static llvm::MemoryLocation getForSource(
const llvm::AnyMemTransferInst* MTI)
static llvm::MemoryLocation getForSource(
const llvm::AnyMemTransferInst* MTI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:227
Parameters
- const llvm::AnyMemTransferInst* MTI
¶static llvm::MemoryLocation getForSource(
const llvm::AtomicMemTransferInst* MTI)
static llvm::MemoryLocation getForSource(
const llvm::AtomicMemTransferInst* MTI)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:226
Parameters
- const llvm::AtomicMemTransferInst* MTI
¶static llvm::MemoryLocation getForSource(
const llvm::MemTransferInst* MTI)
static llvm::MemoryLocation getForSource(
const llvm::MemTransferInst* MTI)
Description
Return a location representing the source of a memory transfer.
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:225
Parameters
- const llvm::MemTransferInst* MTI
¶static Optional<llvm::MemoryLocation> getOrNone(
const llvm::Instruction* Inst)
static Optional<llvm::MemoryLocation> getOrNone(
const llvm::Instruction* Inst)
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:207
Parameters
- const llvm::Instruction* Inst
¶llvm::MemoryLocation getWithNewPtr(
const llvm::Value* NewPtr) const
llvm::MemoryLocation getWithNewPtr(
const llvm::Value* NewPtr) const
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:248
Parameters
- const llvm::Value* NewPtr
¶llvm::MemoryLocation getWithNewSize(
llvm::LocationSize NewSize) const
llvm::MemoryLocation getWithNewSize(
llvm::LocationSize NewSize) const
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:254
Parameters
- llvm::LocationSize NewSize
¶llvm::MemoryLocation getWithoutAATags() const
llvm::MemoryLocation getWithoutAATags() const
Declared at: llvm/include/llvm/Analysis/MemoryLocation.h:260