LLVM  13.0.0git
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
llvm::AAMDNodes Struct Reference

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"

Collaboration diagram for llvm::AAMDNodes:
Collaboration graph
[legend]

Public Member Functions

 AAMDNodes ()=default
 
 AAMDNodes (MDNode *T, MDNode *TS, MDNode *S, MDNode *N)
 
bool operator== (const AAMDNodes &A) const
 
bool operator!= (const AAMDNodes &A) const
 
 operator bool () const
 
AAMDNodes intersect (const AAMDNodes &Other)
 Given two sets of AAMDNodes that apply to the same pointer, give the best AAMDNodes that are compatible with both (i.e. More...
 
AAMDNodes shift (size_t Offset)
 Create a new AAMDNode that describes this AAMDNode after applying a constant offset to the start of the pointer. More...
 

Static Public Member Functions

static MDNodeShiftTBAA (MDNode *M, size_t off)
 
static MDNodeShiftTBAAStruct (MDNode *M, size_t off)
 

Public Attributes

MDNodeTBAA = nullptr
 The tag for type-based alias analysis. More...
 
MDNodeTBAAStruct = nullptr
 The tag for type-based alias analysis (tbaa struct). More...
 
MDNodeScope = nullptr
 The tag for alias scope specification (used with noalias). More...
 
MDNodeNoAlias = nullptr
 The tag specifying the noalias scope. More...
 

Detailed Description

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

Definition at line 651 of file Metadata.h.

Constructor & Destructor Documentation

◆ AAMDNodes() [1/2]

llvm::AAMDNodes::AAMDNodes ( )
explicitdefault

◆ AAMDNodes() [2/2]

llvm::AAMDNodes::AAMDNodes ( MDNode T,
MDNode TS,
MDNode S,
MDNode N 
)
inlineexplicit

Definition at line 653 of file Metadata.h.

References T.

Member Function Documentation

◆ intersect()

AAMDNodes llvm::AAMDNodes::intersect ( const AAMDNodes Other)
inline

Given two sets of AAMDNodes that apply to the same pointer, give the best AAMDNodes that are compatible with both (i.e.

a set of nodes whose allowable aliasing conclusions are a subset of those allowable by both of the inputs). However, for efficiency reasons, do not create any new MDNodes.

Definition at line 690 of file Metadata.h.

References NoAlias, Other, Scope, TBAA, and TBAAStruct.

◆ operator bool()

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

Definition at line 663 of file Metadata.h.

References NoAlias, Scope, TBAA, and TBAAStruct.

◆ operator!=()

bool llvm::AAMDNodes::operator!= ( const AAMDNodes A) const
inline

Definition at line 661 of file Metadata.h.

◆ operator==()

bool llvm::AAMDNodes::operator== ( const AAMDNodes A) const
inline

Definition at line 656 of file Metadata.h.

References NoAlias, Scope, TBAA, and TBAAStruct.

◆ shift()

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

Create a new AAMDNode that describes this AAMDNode after applying a constant offset to the start of the pointer.

Definition at line 701 of file Metadata.h.

References NoAlias, Offset, Scope, ShiftTBAA(), ShiftTBAAStruct(), TBAA, and TBAAStruct.

◆ ShiftTBAA()

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

Definition at line 741 of file TypeBasedAliasAnalysis.cpp.

References isStructPathTBAA(), and Offset.

Referenced by shift().

◆ ShiftTBAAStruct()

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

Member Data Documentation

◆ NoAlias

MDNode* llvm::AAMDNodes::NoAlias = nullptr

◆ Scope

MDNode* llvm::AAMDNodes::Scope = nullptr

◆ TBAA

MDNode* llvm::AAMDNodes::TBAA = nullptr

◆ TBAAStruct

MDNode* llvm::AAMDNodes::TBAAStruct = nullptr

The tag for type-based alias analysis (tbaa struct).

Definition at line 671 of file Metadata.h.

Referenced by llvm::DenseMapInfo< AAMDNodes >::getHashValue(), intersect(), operator bool(), operator==(), and shift().


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