class ValueAsMetadata

Declaration

class ValueAsMetadata : public Metadata,
                        private ReplaceableMetadataImpl { /* full declaration omitted */ };

Description

Value wrapper in the Metadata hierarchy. This is a custom value handle that allows other metadata to refer to classes in the Value hierarchy. Because of full uniquing support, each value is only wrapped by a single \a ValueAsMetadata object, so the lookup maps are far more efficient than those using ValueHandleBase.

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

Inherits from: Metadata, ReplaceableMetadataImpl

Member Variables

private llvm::Value* V

Inherited from Metadata:

protected Storage
protected SubclassData1
protected SubclassData16 = 0
protected SubclassData32 = 0

Method Overview

Inherited from Metadata:

Methods

ValueAsMetadata(unsigned int ID, llvm::Value* V)

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

Parameters

unsigned int ID
llvm::Value* V

static bool classof(const llvm::Metadata* MD)

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

Parameters

const llvm::Metadata* MD

void dropUsers()

Description

Drop users without RAUW (during teardown).

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

static llvm::ValueAsMetadata* get(llvm::Value* V)

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

Parameters

llvm::Value* V

SmallVector<llvm::Metadata*> getAllArgListUsers()

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

static llvm::ConstantAsMetadata* getConstant(
    llvm::Value* C)

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

Parameters

llvm::Value* C

static llvm::ConstantAsMetadata*
getConstantIfExists(llvm::Value* C)

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

Parameters

llvm::Value* C

llvm::LLVMContext& getContext() const

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

static llvm::ValueAsMetadata* getIfExists(
    llvm::Value* V)

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

Parameters

llvm::Value* V

static llvm::LocalAsMetadata* getLocal(
    llvm::Value* Local)

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

Parameters

llvm::Value* Local

static llvm::LocalAsMetadata* getLocalIfExists(
    llvm::Value* Local)

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

Parameters

llvm::Value* Local

llvm::Type* getType() const

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

llvm::Value* getValue() const

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

static void handleDeletion(llvm::Value* V)

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

Parameters

llvm::Value* V

static void handleRAUW(llvm::Value* From,
                       llvm::Value* To)

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

Parameters

llvm::Value* From
llvm::Value* To

void replaceAllUsesWith(llvm::Metadata* MD)

Description

Handle collisions after \a Value::replaceAllUsesWith(). RAUW isn't supported directly for \a ValueAsMetadata, but if the wrapped\a Value gets RAUW'ed and the target already exists, this is used to merge the two metadata nodes.

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

Parameters

llvm::Metadata* MD

~ValueAsMetadata()

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