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... | |
Public Member Functions inherited from llvm::Metadata | |
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 | |
Public Types inherited from llvm::Metadata | |
enum | MetadataKind |
Protected Types inherited from llvm::Metadata | |
enum | StorageType { Uniqued, Distinct, Temporary } |
Active type of storage. More... | |
Protected Member Functions inherited from llvm::Metadata | |
Metadata (unsigned ID, StorageType Storage) | |
~Metadata ()=default | |
void | handleChangedOperand (void *, Metadata *) |
Default handling of a changed operand, which asserts. More... | |
Protected Attributes inherited from llvm::Metadata | |
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.