LLVM 22.0.0git
llvm::DistinctMDOperandPlaceholder Class Reference

Placeholder metadata for operands of distinct MDNodes. More...

#include "llvm/IR/Metadata.h"

Inheritance diagram for llvm::DistinctMDOperandPlaceholder:
[legend]

Public Member Functions

 DistinctMDOperandPlaceholder (unsigned ID)
 DistinctMDOperandPlaceholder ()=delete
 DistinctMDOperandPlaceholder (DistinctMDOperandPlaceholder &&)=delete
 DistinctMDOperandPlaceholder (const DistinctMDOperandPlaceholder &)=delete
 ~DistinctMDOperandPlaceholder ()
unsigned getID () const
void replaceUseWith (Metadata *MD)
 Replace the use of this with MD.

Friends

class MetadataTracking

Additional Inherited Members

 Active type of storage. More...

Detailed Description

Placeholder metadata for operands of distinct MDNodes.

This is a lightweight placeholder for an operand of a distinct node. It's purpose is to help track forward references when creating a distinct node. This allows distinct nodes involved in a cycle to be constructed before their operands without requiring a heavyweight temporary node with full-blown RAUW support.

Each placeholder supports only a single MDNode user. Clients should pass an ID, retrieved via getID(), to indicate the "real" operand that this should be replaced with.

While it would be possible to implement move operators, they would be fairly expensive. Leave them unimplemented to discourage their use (clients can use std::deque, std::list, BumpPtrAllocator, etc.).

Definition at line 1704 of file Metadata.h.

Constructor & Destructor Documentation

◆ DistinctMDOperandPlaceholder() [1/4]

llvm::DistinctMDOperandPlaceholder::DistinctMDOperandPlaceholder ( unsigned ID)
inlineexplicit

◆ DistinctMDOperandPlaceholder() [2/4]

llvm::DistinctMDOperandPlaceholder::DistinctMDOperandPlaceholder ( )
delete

◆ DistinctMDOperandPlaceholder() [3/4]

llvm::DistinctMDOperandPlaceholder::DistinctMDOperandPlaceholder ( DistinctMDOperandPlaceholder && )
delete

◆ DistinctMDOperandPlaceholder() [4/4]

llvm::DistinctMDOperandPlaceholder::DistinctMDOperandPlaceholder ( const DistinctMDOperandPlaceholder & )
delete

◆ ~DistinctMDOperandPlaceholder()

llvm::DistinctMDOperandPlaceholder::~DistinctMDOperandPlaceholder ( )
inline

Definition at line 1719 of file Metadata.h.

Member Function Documentation

◆ getID()

unsigned llvm::DistinctMDOperandPlaceholder::getID ( ) const
inline

Definition at line 1724 of file Metadata.h.

References llvm::Metadata::SubclassData32.

◆ replaceUseWith()

void llvm::DistinctMDOperandPlaceholder::replaceUseWith ( Metadata * MD)
inline

Replace the use of this with MD.

Definition at line 1727 of file Metadata.h.

References assert(), llvm::cast(), llvm::Metadata::Metadata(), T, llvm::MetadataTracking::track(), and llvm::MetadataTracking::untrack().

◆ MetadataTracking

friend class MetadataTracking
friend

Definition at line 1705 of file Metadata.h.

References llvm::Metadata::Metadata(), and MetadataTracking.

Referenced by MetadataTracking.


The documentation for this class was generated from the following file: