LLVM
8.0.1
|
Placeholder metadata for operands of distinct MDNodes. More...
#include "llvm/IR/Metadata.h"
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. More... | |
![]() | |
unsigned | getMetadataID () const |
void | dump () const |
User-friendly dump. More... | |
void | dump (const Module *M) const |
void | print (raw_ostream &OS, const Module *M=nullptr, bool IsForDebug=false) const |
Print. More... | |
void | print (raw_ostream &OS, ModuleSlotTracker &MST, const Module *M=nullptr, bool IsForDebug=false) const |
void | printAsOperand (raw_ostream &OS, const Module *M=nullptr) const |
Print as operand. More... | |
void | printAsOperand (raw_ostream &OS, ModuleSlotTracker &MST, const Module *M=nullptr) const |
Friends | |
class | MetadataTracking |
Additional Inherited Members | |
![]() | |
enum | MetadataKind |
![]() | |
enum | StorageType { Uniqued, Distinct, Temporary } |
Active type of storage. More... | |
![]() | |
Metadata (unsigned ID, StorageType Storage) | |
~Metadata ()=default | |
void | handleChangedOperand (void *, Metadata *) |
Default handling of a changed operand, which asserts. More... | |
![]() | |
unsigned char | Storage: 7 |
Storage flag for non-uniqued, otherwise unowned, metadata. More... | |
unsigned char | ImplicitCode: 1 |
unsigned short | SubclassData16 = 0 |
unsigned | SubclassData32 = 0 |
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 1281 of file Metadata.h.
|
inlineexplicit |
Definition at line 1287 of file Metadata.h.
References llvm::Metadata::SubclassData32.
|
delete |
|
delete |
|
delete |
|
inline |
Definition at line 1296 of file Metadata.h.
|
inline |
Definition at line 1301 of file Metadata.h.
References llvm::Metadata::SubclassData32.
|
inline |
Replace the use of this with MD.
Definition at line 1304 of file Metadata.h.
References assert(), llvm::MetadataTracking::track(), and llvm::MetadataTracking::untrack().
|
friend |
Definition at line 1282 of file Metadata.h.