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:
- include/llvm/IR/Metadata.h
- lib/Analysis/TypeBasedAliasAnalysis.cpp