class ReplaceableMetadataImpl
Declaration
class ReplaceableMetadataImpl { /* full declaration omitted */ };
Description
Shared implementation of use-lists for replaceable metadata. Most metadata cannot be RAUW'ed. This is a shared implementation of use-lists and associated API for the two that support it (\a ValueAsMetadata and \a TempMDNode).
Declared at: llvm/include/llvm/IR/Metadata.h:281
Member Variables
- private llvm::LLVMContext& Context
- private uint64_t NextIndex = 0
- private SmallDenseMap<void*, std::pair<OwnerTy, uint64_t>, 4> UseMap
Method Overview
- public ReplaceableMetadataImpl(llvm::LLVMContext & Context)
- public static void SalvageDebugInfo(const llvm::Constant & C)
- private void addRef(void * Ref, llvm::ReplaceableMetadataImpl::OwnerTy Owner)
- private void dropRef(void * Ref)
- public SmallVector<llvm::Metadata *> getAllArgListUsers()
- public llvm::LLVMContext & getContext() const
- private static llvm::ReplaceableMetadataImpl * getIfExists(llvm::Metadata & MD)
- private static llvm::ReplaceableMetadataImpl * getOrCreate(llvm::Metadata & MD)
- private static bool isReplaceable(const llvm::Metadata & MD)
- private void moveRef(void * Ref, void * New, const llvm::Metadata & MD)
- public void replaceAllUsesWith(llvm::Metadata * MD)
- public void resolveAllUses(bool ResolveUsers = true)
- public ~ReplaceableMetadataImpl()
Methods
¶ReplaceableMetadataImpl(
llvm::LLVMContext& Context)
ReplaceableMetadataImpl(
llvm::LLVMContext& Context)
Declared at: llvm/include/llvm/IR/Metadata.h:293
Parameters
- llvm::LLVMContext& Context
¶static void SalvageDebugInfo(
const llvm::Constant& C)
static void SalvageDebugInfo(
const llvm::Constant& C)
Description
Replace all uses of the constant with Undef in debug info metadata
Declared at: llvm/include/llvm/IR/Metadata.h:306
Parameters
- const llvm::Constant& C
¶void addRef(
void* Ref,
llvm::ReplaceableMetadataImpl::OwnerTy Owner)
void addRef(
void* Ref,
llvm::ReplaceableMetadataImpl::OwnerTy Owner)
Declared at: llvm/include/llvm/IR/Metadata.h:318
Parameters
- void* Ref
- llvm::ReplaceableMetadataImpl::OwnerTy Owner
¶void dropRef(void* Ref)
void dropRef(void* Ref)
Declared at: llvm/include/llvm/IR/Metadata.h:319
Parameters
- void* Ref
¶SmallVector<llvm::Metadata*> getAllArgListUsers()
SmallVector<llvm::Metadata*> getAllArgListUsers()
Description
Returns the list of all DIArgList users of this.
Declared at: llvm/include/llvm/IR/Metadata.h:308
¶llvm::LLVMContext& getContext() const
llvm::LLVMContext& getContext() const
Declared at: llvm/include/llvm/IR/Metadata.h:299
¶static llvm::ReplaceableMetadataImpl* getIfExists(
llvm::Metadata& MD)
static llvm::ReplaceableMetadataImpl* getIfExists(
llvm::Metadata& MD)
Description
Get RAUW support on MD, if it exists.
Declared at: llvm/include/llvm/IR/Metadata.h:329
Parameters
- llvm::Metadata& MD
¶static llvm::ReplaceableMetadataImpl* getOrCreate(
llvm::Metadata& MD)
static llvm::ReplaceableMetadataImpl* getOrCreate(
llvm::Metadata& MD)
Description
Lazily construct RAUW support on MD. If this is an unresolved MDNode, RAUW support will be created on-demand. ValueAsMetadata always has RAUW support.
Declared at: llvm/include/llvm/IR/Metadata.h:326
Parameters
- llvm::Metadata& MD
¶static bool isReplaceable(
const llvm::Metadata& MD)
static bool isReplaceable(
const llvm::Metadata& MD)
Description
Check whether this node will support RAUW. Returns \c true unless getOrCreate() would return null.
Declared at: llvm/include/llvm/IR/Metadata.h:334
Parameters
- const llvm::Metadata& MD
¶void moveRef(void* Ref,
void* New,
const llvm::Metadata& MD)
void moveRef(void* Ref,
void* New,
const llvm::Metadata& MD)
Declared at: llvm/include/llvm/IR/Metadata.h:320
Parameters
- void* Ref
- void* New
- const llvm::Metadata& MD
¶void replaceAllUsesWith(llvm::Metadata* MD)
void replaceAllUsesWith(llvm::Metadata* MD)
Description
Replace all uses of this with MD. Replace all uses of this with \c MD, which is allowed to be null.
Declared at: llvm/include/llvm/IR/Metadata.h:304
Parameters
- llvm::Metadata* MD
¶void resolveAllUses(bool ResolveUsers = true)
void resolveAllUses(bool ResolveUsers = true)
Description
Resolve all uses of this. Resolve all uses of this, turning off RAUW permanently. If \c ResolveUsers, call \a MDNode::resolve() on any users whose last operand is resolved.
Declared at: llvm/include/llvm/IR/Metadata.h:315
Parameters
- bool ResolveUsers = true
¶~ReplaceableMetadataImpl()
~ReplaceableMetadataImpl()
Declared at: llvm/include/llvm/IR/Metadata.h:295