LLVM 18.0.0git
|
Value wrapper in the Metadata hierarchy. More...
#include "llvm/IR/Metadata.h"
Public Member Functions | |
Value * | getValue () const |
Type * | getType () const |
LLVMContext & | getContext () const |
SmallVector< Metadata * > | getAllArgListUsers () |
SmallVector< DPValue * > | getAllDPValueUsers () |
![]() | |
unsigned | getMetadataID () const |
void | dump () const |
User-friendly dump. | |
void | dump (const Module *M) const |
void | print (raw_ostream &OS, const Module *M=nullptr, bool IsForDebug=false) const |
Print. | |
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. | |
void | printAsOperand (raw_ostream &OS, ModuleSlotTracker &MST, const Module *M=nullptr) const |
Static Public Member Functions | |
static ValueAsMetadata * | get (Value *V) |
static ConstantAsMetadata * | getConstant (Value *C) |
static LocalAsMetadata * | getLocal (Value *Local) |
static ValueAsMetadata * | getIfExists (Value *V) |
static ConstantAsMetadata * | getConstantIfExists (Value *C) |
static LocalAsMetadata * | getLocalIfExists (Value *Local) |
static void | handleDeletion (Value *V) |
static void | handleRAUW (Value *From, Value *To) |
static bool | classof (const Metadata *MD) |
Protected Member Functions | |
ValueAsMetadata (unsigned ID, Value *V) | |
~ValueAsMetadata ()=default | |
void | replaceAllUsesWith (Metadata *MD) |
Handle collisions after Value::replaceAllUsesWith(). | |
![]() | |
Metadata (unsigned ID, StorageType Storage) | |
~Metadata ()=default | |
void | handleChangedOperand (void *, Metadata *) |
Default handling of a changed operand, which asserts. | |
Friends | |
class | ReplaceableMetadataImpl |
class | LLVMContextImpl |
Additional Inherited Members | |
![]() | |
enum | MetadataKind |
![]() | |
enum | StorageType { Uniqued , Distinct , Temporary } |
Active type of storage. More... | |
![]() | |
unsigned char | Storage: 7 |
Storage flag for non-uniqued, otherwise unowned, metadata. | |
unsigned char | SubclassData1: 1 |
unsigned short | SubclassData16 = 0 |
unsigned | SubclassData32 = 0 |
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 ValueAsMetadata object, so the lookup maps are far more efficient than those using ValueHandleBase.
Definition at line 428 of file Metadata.h.
Definition at line 440 of file Metadata.h.
References assert().
|
protecteddefault |
Definition at line 493 of file Metadata.h.
References llvm::Metadata::getMetadataID().
|
static |
Definition at line 454 of file Metadata.cpp.
References assert(), llvm::CallingConv::C, Context, llvm::LLVMContext::pImpl, and llvm::LLVMContextImpl::ValuesAsMetadata.
Referenced by addModuleFlags(), llvm::memprof::buildCallstackMetadata(), llvm::ConvertDebugDeclareToDebugValue(), llvm::hlsl::FrontendResource::FrontendResource(), llvm::getAsMetadata(), getAsMetadata(), getConstant(), getDbgIntrinsicValueImpl(), getLocal(), llvm::DIArgList::handleChangedOperand(), INITIALIZE_PASS(), llvm::DIBuilder::insertDbgAssign(), insertDbgValueOrDPValue(), insertDbgValueOrDPValueAfter(), LLVMValueAsMetadata(), llvm::DbgVariableIntrinsic::replaceVariableLocationOp(), llvm::DPValue::replaceVariableLocationOp(), restorePreTransformState(), llvm::ReplaceableMetadataImpl::SalvageDebugInfo(), llvm::DbgAssignIntrinsic::setAddress(), llvm::DbgAssignIntrinsic::setValue(), updateDVIWithLocation(), and updateDVIWithLocations().
|
inline |
Definition at line 472 of file Metadata.h.
References llvm::ReplaceableMetadataImpl::getAllArgListUsers().
|
inline |
Definition at line 475 of file Metadata.h.
References llvm::ReplaceableMetadataImpl::getAllDPValueUsers().
|
inlinestatic |
Definition at line 450 of file Metadata.h.
References llvm::CallingConv::C, and get().
Referenced by llvm::ConstantAsMetadata::get(), and wrapConstantAsMetadata().
|
inlinestatic |
Definition at line 460 of file Metadata.h.
References llvm::CallingConv::C, and getIfExists().
Referenced by llvm::ConstantAsMetadata::getIfExists().
|
inline |
Definition at line 470 of file Metadata.h.
|
static |
Definition at line 473 of file Metadata.cpp.
References assert().
Referenced by getConstantIfExists(), and getLocalIfExists().
|
inlinestatic |
Definition at line 454 of file Metadata.h.
References get().
Referenced by llvm::LocalAsMetadata::get().
|
inlinestatic |
Definition at line 464 of file Metadata.h.
References getIfExists().
Referenced by llvm::LocalAsMetadata::getIfExists().
|
inline |
Definition at line 469 of file Metadata.h.
|
inline |
Definition at line 468 of file Metadata.h.
Referenced by getHiPELiteral(), getKernelArgAttribute(), llvm::ConstantAsMetadata::getValue(), handleDeletion(), handleRAUW(), llvm::DPValue::location_op_iterator::operator*(), and llvm::location_op_iterator::operator*().
|
static |
Definition at line 478 of file Metadata.cpp.
References assert(), getValue(), I, and replaceAllUsesWith().
Referenced by llvm::Value::~Value().
Definition at line 497 of file Metadata.cpp.
References assert(), llvm::CallingConv::C, Context, From, llvm::ConstantAsMetadata::get(), getLocalFunctionMetadata(), llvm::Value::getType(), getValue(), I, llvm::Value::IsUsedByMD, llvm::LLVMContext::pImpl, replaceAllUsesWith(), and llvm::LLVMContextImpl::ValuesAsMetadata.
Referenced by llvm::Instruction::~Instruction().
|
inlineprotected |
Handle collisions after Value::replaceAllUsesWith().
RAUW isn't supported directly for ValueAsMetadata, but if the wrapped Value gets RAUW'ed and the target already exists, this is used to merge the two metadata nodes.
Definition at line 488 of file Metadata.h.
References llvm::ReplaceableMetadataImpl::replaceAllUsesWith().
Referenced by handleDeletion(), and handleRAUW().
|
friend |
Definition at line 430 of file Metadata.h.
|
friend |
Definition at line 429 of file Metadata.h.