struct AAMDNodes

Declaration

struct AAMDNodes { /* full declaration omitted */ };

Description

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

Declared at: llvm/include/llvm/IR/Metadata.h:652

Member Variables

public llvm::MDNode* TBAA = nullptr
The tag for type-based alias analysis.
public llvm::MDNode* TBAAStruct = nullptr
The tag for type-based alias analysis (tbaa struct).
public llvm::MDNode* Scope = nullptr
The tag for alias scope specification (used with noalias).
public llvm::MDNode* NoAlias = nullptr
The tag specifying the noalias scope.

Method Overview

  • public AAMDNodes()
  • public AAMDNodes(llvm::MDNode * T, llvm::MDNode * TS, llvm::MDNode * S, llvm::MDNode * N)
  • public llvm::AAMDNodes concat(const llvm::AAMDNodes & Other) const
  • public llvm::AAMDNodes extendTo(ssize_t Len) const
  • public static llvm::MDNode * extendToTBAA(llvm::MDNode * TBAA, ssize_t len)
  • public llvm::AAMDNodes intersect(const llvm::AAMDNodes & Other) const
  • public llvm::AAMDNodes merge(const llvm::AAMDNodes & Other) const
  • public bool operator bool() const
  • public llvm::AAMDNodes shift(size_t Offset) const
  • public static llvm::MDNode * shiftTBAA(llvm::MDNode * M, size_t off)
  • public static llvm::MDNode * shiftTBAAStruct(llvm::MDNode * M, size_t off)

Methods

AAMDNodes()

Declared at: llvm/include/llvm/IR/Metadata.h:653

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

Declared at: llvm/include/llvm/IR/Metadata.h:654

Parameters

llvm::MDNode* T
llvm::MDNode* TS
llvm::MDNode* S
llvm::MDNode* N

llvm::AAMDNodes concat(
    const llvm::AAMDNodes& Other) const

Description

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.

Declared at: llvm/include/llvm/IR/Metadata.h:738

Parameters

const llvm::AAMDNodes& Other

llvm::AAMDNodes extendTo(ssize_t Len) const

Description

Create a new AAMDNode that describes this AAMDNode after extending it to apply to a series of bytes of length Len. A size of -1 denotes an unknown size.

Declared at: llvm/include/llvm/IR/Metadata.h:719

Parameters

ssize_t Len

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

Declared at: llvm/include/llvm/IR/Metadata.h:688

Parameters

llvm::MDNode* TBAA
ssize_t len

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

Description

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.

Declared at: llvm/include/llvm/IR/Metadata.h:695

Parameters

const llvm::AAMDNodes& Other

llvm::AAMDNodes merge(
    const llvm::AAMDNodes& Other) const

Description

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

Declared at: llvm/include/llvm/IR/Metadata.h:733

Parameters

const llvm::AAMDNodes& Other

bool operator bool() const

Declared at: llvm/include/llvm/IR/Metadata.h:664

llvm::AAMDNodes shift(size_t Offset) const

Description

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

Declared at: llvm/include/llvm/IR/Metadata.h:706

Parameters

size_t Offset

static llvm::MDNode* shiftTBAA(llvm::MDNode* M,
                               size_t off)

Declared at: llvm/include/llvm/IR/Metadata.h:681

Parameters

llvm::MDNode* M
size_t off

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

Declared at: llvm/include/llvm/IR/Metadata.h:684

Parameters

llvm::MDNode* M
size_t off