class ReplaceableMetadataImpl

Declaration

class ReplaceableMetadataImpl { /* full declaration omitted */ };

Description

Shared implementation of use-lists for replaceable metadata. Most metadata cannot be RAUW'ed. This is a shared implementation of use-lists and associated API for the two that support it (\a ValueAsMetadata and \a TempMDNode).

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

Member Variables

private llvm::LLVMContext& Context
private uint64_t NextIndex = 0
private SmallDenseMap<void*, std::pair<OwnerTy, uint64_t>, 4> UseMap

Method Overview

Methods

ReplaceableMetadataImpl(
    llvm::LLVMContext& Context)

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

Parameters

llvm::LLVMContext& Context

static void SalvageDebugInfo(
    const llvm::Constant& C)

Description

Replace all uses of the constant with Undef in debug info metadata

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

Parameters

const llvm::Constant& C

void addRef(
    void* Ref,
    llvm::ReplaceableMetadataImpl::OwnerTy Owner)

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

Parameters

void* Ref
llvm::ReplaceableMetadataImpl::OwnerTy Owner

void dropRef(void* Ref)

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

Parameters

void* Ref

SmallVector<llvm::Metadata*> getAllArgListUsers()

Description

Returns the list of all DIArgList users of this.

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

llvm::LLVMContext& getContext() const

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

static llvm::ReplaceableMetadataImpl* getIfExists(
    llvm::Metadata& MD)

Description

Get RAUW support on MD, if it exists.

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

Parameters

llvm::Metadata& MD

static llvm::ReplaceableMetadataImpl* getOrCreate(
    llvm::Metadata& MD)

Description

Lazily construct RAUW support on MD. If this is an unresolved MDNode, RAUW support will be created on-demand. ValueAsMetadata always has RAUW support.

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

Parameters

llvm::Metadata& MD

static bool isReplaceable(
    const llvm::Metadata& MD)

Description

Check whether this node will support RAUW. Returns \c true unless getOrCreate() would return null.

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

Parameters

const llvm::Metadata& MD

void moveRef(void* Ref,
             void* New,
             const llvm::Metadata& MD)

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

Parameters

void* Ref
void* New
const llvm::Metadata& MD

void replaceAllUsesWith(llvm::Metadata* MD)

Description

Replace all uses of this with MD. Replace all uses of this with \c MD, which is allowed to be null.

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

Parameters

llvm::Metadata* MD

void resolveAllUses(bool ResolveUsers = true)

Description

Resolve all uses of this. Resolve all uses of this, turning off RAUW permanently. If \c ResolveUsers, call \a MDNode::resolve() on any users whose last operand is resolved.

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

Parameters

bool ResolveUsers = true

~ReplaceableMetadataImpl()

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