LLVM: llvm::AAMDNodes Struct Reference (original) (raw)

A collection of metadata nodes that might be associated with a memory access used by the alias-analysis infrastructure. More...

#include "[llvm/IR/Metadata.h](Metadata%5F8h%5Fsource.html)"

Public Member Functions
AAMDNodes ()=default
AAMDNodes (MDNode *T, MDNode *TS, MDNode *S, MDNode *N, MDNode *NAS)
bool operator== (const AAMDNodes &A) const
bool operator!= (const AAMDNodes &A) const
operator bool () const
AAMDNodes intersect (const AAMDNodes &Other) const
Given two sets of AAMDNodes that apply to the same pointer, give the best AAMDNodes that are compatible with both (i.e.
AAMDNodes shift (size_t Offset) const
Create a new AAMDNode that describes this AAMDNode after applying a constant offset to the start of the pointer.
AAMDNodes extendTo (ssize_t Len) const
Create a new AAMDNode that describes this AAMDNode after extending it to apply to a series of bytes of length Len.
LLVM_ABI AAMDNodes merge (const AAMDNodes &Other) const
Given two sets of AAMDNodes applying to potentially different locations, determine the best AAMDNodes that apply to both.
LLVM_ABI AAMDNodes concat (const AAMDNodes &Other) const
Determine the best AAMDNodes after concatenating two different locations together.
LLVM_ABI AAMDNodes adjustForAccess (unsigned AccessSize)
Create a new AAMDNode for accessing AccessSize bytes of this AAMDNode.
LLVM_ABI AAMDNodes adjustForAccess (size_t Offset, Type *AccessTy, const DataLayout &DL)
LLVM_ABI AAMDNodes adjustForAccess (size_t Offset, unsigned AccessSize)
Public Attributes
MDNode * TBAA = nullptr
The tag for type-based alias analysis.
MDNode * TBAAStruct = nullptr
The tag for type-based alias analysis (tbaa struct).
MDNode * Scope = nullptr
The tag for alias scope specification (used with noalias).
MDNode * NoAlias = nullptr
The tag specifying the noalias scope.
MDNode * NoAliasAddrSpace = nullptr
The tag specifying the noalias address spaces.

A collection of metadata nodes that might be associated with a memory access used by the alias-analysis infrastructure.

Definition at line 761 of file Metadata.h.

llvm::AAMDNodes::AAMDNodes ( ) explicitdefault

AAMDNodes() [2/2]

adjustForAccess() [1/3]

adjustForAccess() [2/3]

adjustForAccess() [3/3]

concat()

Determine the best AAMDNodes after concatenating two different locations together.

Different from merge, where different locations should overlap each other, concat puts non-overlapping locations together.

Definition at line 553 of file TypeBasedAliasAnalysis.cpp.

References AAMDNodes(), llvm::MDNode::getMostGenericAliasScope(), llvm::MDNode::getMostGenericNoaliasAddrspace(), llvm::MDNode::intersect(), NoAlias, NoAliasAddrSpace, llvm::Other, and Scope.

Referenced by foldLoadsRecursive(), and mergeConsecutivePartStores().

extendTo()

AAMDNodes llvm::AAMDNodes::extendTo ( ssize_t Len) const inline

extendToTBAA()

MDNode * AAMDNodes::extendToTBAA ( MDNode * TBAA, ssize_t len ) static

intersect()

merge()

Given two sets of AAMDNodes applying to potentially different locations, determine the best AAMDNodes that apply to both.

Definition at line 542 of file TypeBasedAliasAnalysis.cpp.

References AAMDNodes(), llvm::MDNode::getMostGenericAliasScope(), llvm::MDNode::getMostGenericNoaliasAddrspace(), llvm::MDNode::getMostGenericTBAA(), llvm::MDNode::intersect(), NoAlias, NoAliasAddrSpace, llvm::Other, Scope, and TBAA.

Referenced by mergeConditionalStoreToAddress(), llvm::InstCombinerImpl::mergeStoreIntoSuccessor(), and llvm::promoteLoopAccessesToScalars().

operator bool()

llvm::AAMDNodes::operator bool ( ) const inlineexplicit

operator!=()

operator==()

shift()

AAMDNodes llvm::AAMDNodes::shift ( size_t Offset) const inline

shiftTBAA()

shiftTBAAStruct()

MDNode * AAMDNodes::shiftTBAAStruct ( MDNode * M, size_t off ) static

Definition at line 785 of file TypeBasedAliasAnalysis.cpp.

References llvm::mdconst::extract(), llvm::ConstantAsMetadata::get(), llvm::MDNode::get(), llvm::MDNode::getContext(), llvm::MDNode::getNumOperands(), llvm::MDNode::getOperand(), llvm::Value::getType(), llvm::ConstantInt::getZExtValue(), llvm::Offset, llvm::size(), and llvm::Sub.

Referenced by shift().

NoAlias

MDNode* llvm::AAMDNodes::NoAlias = nullptr

The tag specifying the noalias scope.

Definition at line 787 of file Metadata.h.

Referenced by AAMDNodes(), llvm::ScopedNoAliasAAResult::alias(), canHoistOrSinkWithNoAliasCheck(), concat(), extendTo(), llvm::DenseMapInfo< AAMDNodes >::getHashValue(), llvm::VPlanTransforms::hoistInvariantLoads(), intersect(), merge(), operator bool(), operator==(), and shift().

NoAliasAddrSpace

MDNode* llvm::AAMDNodes::NoAliasAddrSpace = nullptr

Scope

MDNode* llvm::AAMDNodes::Scope = nullptr

The tag for alias scope specification (used with noalias).

Definition at line 784 of file Metadata.h.

Referenced by AAMDNodes(), llvm::ScopedNoAliasAAResult::alias(), canHoistOrSinkWithNoAliasCheck(), concat(), extendTo(), llvm::DenseMapInfo< AAMDNodes >::getHashValue(), llvm::VPlanTransforms::hoistInvariantLoads(), intersect(), merge(), operator bool(), operator==(), and shift().

TBAA

MDNode* llvm::AAMDNodes::TBAA = nullptr

The tag for type-based alias analysis.

Definition at line 778 of file Metadata.h.

Referenced by AAMDNodes(), llvm::TypeBasedAAResult::alias(), collectMemAccessInfo(), extendTo(), llvm::DenseMapInfo< AAMDNodes >::getHashValue(), getMemcpyLoadsAndStores(), getMemmoveLoadsAndStores(), getMemsetStores(), intersect(), merge(), operator bool(), operator==(), and shift().

TBAAStruct

MDNode* llvm::AAMDNodes::TBAAStruct = nullptr


The documentation for this struct was generated from the following files: