LLVM 19.0.0git
Public Member Functions | Friends | List of all members
llvm::DistinctMDOperandPlaceholder Class Reference

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

#include "llvm/IR/Metadata.h"

Inheritance diagram for llvm::DistinctMDOperandPlaceholder:
Inheritance graph
[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 1684 of file Metadata.h.

Constructor & Destructor Documentation

◆ DistinctMDOperandPlaceholder() [1/4]

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

Definition at line 1690 of file Metadata.h.

References llvm::Metadata::SubclassData32.

◆ 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 1699 of file Metadata.h.

Member Function Documentation

◆ getID()

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

Definition at line 1704 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 1707 of file Metadata.h.

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

Friends And Related Function Documentation

◆ MetadataTracking

friend class MetadataTracking
friend

Definition at line 1685 of file Metadata.h.


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