class MDNode
Declaration
class MDNode : public Metadata { /* full declaration omitted */ };
Description
Metadata node. Metadata nodes can be uniqued, like constants, or distinct. Temporary metadata nodes (with full support for RAUW) can be used to delay uniquing until forward references are known. The basic metadata node is an \a MDTuple. There is limited support for RAUW at construction time. At construction time, if any operand is a temporary node (or an unresolved uniqued node, which indicates a transitive temporary operand), the node itself will be unresolved. As soon as all operands become resolved, it will drop RAUW support permanently. If an unresolved node is part of a cycle, \a resolveCycles() needs to be called on some member of the cycle once all temporary nodes have been replaced. MDNodes can be large or small, as well as resizable or non-resizable. Large MDNodes' operands are allocated in a separate storage vector, whereas small MDNodes' operands are co-allocated. Distinct and temporary MDnodes are resizable, but only MDTuples support this capability. Clients can add operands to resizable MDNodes using push_back().
Declared at: llvm/include/llvm/IR/Metadata.h:944
Inherits from: Metadata
Member Variables
- private llvm::ContextAndReplaceableUses Context
Inherited from Metadata:
Method Overview
- protected MDNode(llvm::LLVMContext & Context, unsigned int ID, llvm::Metadata::StorageType Storage, ArrayRef<llvm::Metadata *> Ops1, ArrayRef<llvm::Metadata *> Ops2 = None)
- public MDNode(const llvm::MDNode &)
- public static bool classof(const llvm::Metadata * MD)
- public llvm::TempMDNode clone() const
- public static llvm::MDNode * concatenate(llvm::MDNode * A, llvm::MDNode * B)
- private void countUnresolvedOperands()
- private void decrementUnresolvedOperandCount()
- private void deleteAsSubclass()
- public static void deleteTemporary(llvm::MDNode * N)
- private template <class NodeTy>static void dispatchRecalculateHash(NodeTy * N, std::true_type)
- private template <class NodeTy>static void dispatchRecalculateHash(NodeTy *, std::false_type)
- private template <class NodeTy>static void dispatchResetHash(NodeTy * N, std::true_type)
- private template <class NodeTy>static void dispatchResetHash(NodeTy *, std::false_type)
- protected void dropAllReferences()
- private void dropReplaceableUses()
- public void dumpTree(const llvm::Module * M) const
- public void dumpTree() const
- private void eraseFromStore()
- public static inline llvm::MDTuple * get(llvm::LLVMContext & Context, ArrayRef<llvm::Metadata *> MDs)
- public llvm::LLVMContext & getContext() const
- public static inline llvm::MDTuple * getDistinct(llvm::LLVMContext & Context, ArrayRef<llvm::Metadata *> MDs)
- private const llvm::MDNode::Header & getHeader() const
- private llvm::MDNode::Header & getHeader()
- public static inline llvm::MDTuple * getIfExists(llvm::LLVMContext & Context, ArrayRef<llvm::Metadata *> MDs)
- public static llvm::MDNode * getMostGenericAliasScope(llvm::MDNode * A, llvm::MDNode * B)
- public static llvm::MDNode * getMostGenericAlignmentOrDereferenceable(llvm::MDNode * A, llvm::MDNode * B)
- public static llvm::MDNode * getMostGenericFPMath(llvm::MDNode * A, llvm::MDNode * B)
- public static llvm::MDNode * getMostGenericRange(llvm::MDNode * A, llvm::MDNode * B)
- public static llvm::MDNode * getMostGenericTBAA(llvm::MDNode * A, llvm::MDNode * B)
- public unsigned int getNumOperands() const
- protected unsigned int getNumUnresolved() const
- public const llvm::MDOperand & getOperand(unsigned int I) const
- public static inline llvm::TempMDTuple getTemporary(llvm::LLVMContext & Context, ArrayRef<llvm::Metadata *> MDs)
- private void handleChangedOperand(void * Ref, llvm::Metadata * New)
- public static llvm::MDNode * intersect(llvm::MDNode * A, llvm::MDNode * B)
- public bool isDistinct() const
- public bool isResolved() const
- public bool isTBAAVtableAccess() const
- public bool isTemporary() const
- public bool isUniqued() const
- private void makeDistinct()
- private void makeUniqued()
- protected llvm::MDOperand * mutable_begin()
- protected llvm::MDOperand * mutable_end()
- protected llvm::MDNode::mutable_op_range mutable_operands()
- public llvm::MDNode::op_iterator op_begin() const
- public llvm::MDNode::op_iterator op_end() const
- public ArrayRef<llvm::MDOperand> operands() const
- public void printTree(llvm::raw_ostream & OS, llvm::ModuleSlotTracker & MST, const llvm::Module * M = nullptr) const
- public void printTree(llvm::raw_ostream & OS, const llvm::Module * M = nullptr) const
- public void replaceAllUsesWith(llvm::Metadata * MD)
- public void replaceOperandWith(unsigned int I, llvm::Metadata * New)
- public template <class T>static std::enable_if_t<std::is_base_of<MDNode, T>::value, T *> replaceWithDistinct(std::unique_ptr<T, TempMDNodeDeleter> N)
- private llvm::MDNode * replaceWithDistinctImpl()
- public template <class T>static std::enable_if_t<std::is_base_of<MDNode, T>::value, T *> replaceWithPermanent(std::unique_ptr<T, TempMDNodeDeleter> N)
- private llvm::MDNode * replaceWithPermanentImpl()
- public template <class T>static std::enable_if_t<std::is_base_of<MDNode, T>::value, T *> replaceWithUniqued(std::unique_ptr<T, TempMDNodeDeleter> N)
- private llvm::MDNode * replaceWithUniquedImpl()
- protected void resize(size_t NumOps)
- public void resolve()
- private void resolveAfterOperandChange(llvm::Metadata * Old, llvm::Metadata * New)
- public void resolveCycles()
- protected void setNumUnresolved(unsigned int N)
- protected void setOperand(unsigned int I, llvm::Metadata * New)
- protected void storeDistinctInContext()
- protected template <class T, class StoreT>static T * storeImpl(T * N, llvm::Metadata::StorageType Storage, StoreT & Store)
- protected template <class T>static T * storeImpl(T * N, llvm::Metadata::StorageType Storage)
- private llvm::MDNode * uniquify()
- protected ~MDNode()
Inherited from Metadata:
- public dump
- public dump
- public getMetadataID
- protected handleChangedOperand
- public print
- public print
- public printAsOperand
- public printAsOperand
Methods
¶MDNode(llvm::LLVMContext& Context,
unsigned int ID,
llvm::Metadata::StorageType Storage,
ArrayRef<llvm::Metadata*> Ops1,
ArrayRef<llvm::Metadata*> Ops2 = None)
MDNode(llvm::LLVMContext& Context,
unsigned int ID,
llvm::Metadata::StorageType Storage,
ArrayRef<llvm::Metadata*> Ops1,
ArrayRef<llvm::Metadata*> Ops2 = None)
Declared at: llvm/include/llvm/IR/Metadata.h:1058
Parameters
- llvm::LLVMContext& Context
- unsigned int ID
- llvm::Metadata::StorageType Storage
- ArrayRef<llvm::Metadata*> Ops1
- ArrayRef<llvm::Metadata*> Ops2 = None
¶MDNode(const llvm::MDNode&)
MDNode(const llvm::MDNode&)
Declared at: llvm/include/llvm/IR/Metadata.h:1087
Parameters
- const llvm::MDNode&
¶static bool classof(const llvm::Metadata* MD)
static bool classof(const llvm::Metadata* MD)
Description
Methods for support type inquiry through isa, cast, and dyn_cast:
Declared at: llvm/include/llvm/IR/Metadata.h:1301
Parameters
- const llvm::Metadata* MD
¶llvm::TempMDNode clone() const
llvm::TempMDNode clone() const
Description
Create a (temporary) clone of this.
Declared at: llvm/include/llvm/IR/Metadata.h:1100
¶static llvm::MDNode* concatenate(llvm::MDNode* A,
llvm::MDNode* B)
static llvm::MDNode* concatenate(llvm::MDNode* A,
llvm::MDNode* B)
Description
Methods for metadata merging.
Declared at: llvm/include/llvm/IR/Metadata.h:1316
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶void countUnresolvedOperands()
void countUnresolvedOperands()
Declared at: llvm/include/llvm/IR/Metadata.h:1245
¶void decrementUnresolvedOperandCount()
void decrementUnresolvedOperandCount()
Declared at: llvm/include/llvm/IR/Metadata.h:1244
¶void deleteAsSubclass()
void deleteAsSubclass()
Declared at: llvm/include/llvm/IR/Metadata.h:1260
¶static void deleteTemporary(llvm::MDNode* N)
static void deleteTemporary(llvm::MDNode* N)
Description
Deallocate a node created by getTemporary. Calls \c replaceAllUsesWith(nullptr) before deleting, so any remaining references will be reset.
Declared at: llvm/include/llvm/IR/Metadata.h:1106
Parameters
- llvm::MDNode* N
¶template <class NodeTy>
static void dispatchRecalculateHash(
NodeTy* N,
std::true_type)
template <class NodeTy>
static void dispatchRecalculateHash(
NodeTy* N,
std::true_type)
Declared at: llvm/include/llvm/IR/Metadata.h:1266
Templates
- NodeTy
Parameters
- NodeTy* N
- std::true_type
¶template <class NodeTy>
static void dispatchRecalculateHash(
NodeTy*,
std::false_type)
template <class NodeTy>
static void dispatchRecalculateHash(
NodeTy*,
std::false_type)
Declared at: llvm/include/llvm/IR/Metadata.h:1270
Templates
- NodeTy
Parameters
- NodeTy*
- std::false_type
¶template <class NodeTy>
static void dispatchResetHash(NodeTy* N,
std::true_type)
template <class NodeTy>
static void dispatchResetHash(NodeTy* N,
std::true_type)
Declared at: llvm/include/llvm/IR/Metadata.h:1272
Templates
- NodeTy
Parameters
- NodeTy* N
- std::true_type
¶template <class NodeTy>
static void dispatchResetHash(NodeTy*,
std::false_type)
template <class NodeTy>
static void dispatchResetHash(NodeTy*,
std::false_type)
Declared at: llvm/include/llvm/IR/Metadata.h:1276
Templates
- NodeTy
Parameters
- NodeTy*
- std::false_type
¶void dropAllReferences()
void dropAllReferences()
Declared at: llvm/include/llvm/IR/Metadata.h:1075
¶void dropReplaceableUses()
void dropReplaceableUses()
Description
Drop RAUW support, if any.
Declared at: llvm/include/llvm/IR/Metadata.h:1241
¶void dumpTree(const llvm::Module* M) const
void dumpTree(const llvm::Module* M) const
Declared at: llvm/include/llvm/IR/Metadata.h:1204
Parameters
- const llvm::Module* M
¶void dumpTree() const
void dumpTree() const
Description
User-friendly dump in tree shape. If \c M is provided, metadata nodes will be numbered canonically; otherwise, pointer addresses are substituted. Note: this uses an explicit overload instead of default arguments so that the nullptr version is easy to call from a debugger. @ {
Declared at: llvm/include/llvm/IR/Metadata.h:1203
¶void eraseFromStore()
void eraseFromStore()
Declared at: llvm/include/llvm/IR/Metadata.h:1262
¶static inline llvm::MDTuple* get(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
static inline llvm::MDTuple* get(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
Declared at: llvm/include/llvm/IR/Metadata.h:1091
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Metadata*> MDs
¶llvm::LLVMContext& getContext() const
llvm::LLVMContext& getContext() const
Declared at: llvm/include/llvm/IR/Metadata.h:1108
¶static inline llvm::MDTuple* getDistinct(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
static inline llvm::MDTuple* getDistinct(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
Declared at: llvm/include/llvm/IR/Metadata.h:1094
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Metadata*> MDs
¶const llvm::MDNode::Header& getHeader() const
const llvm::MDNode::Header& getHeader() const
Declared at: llvm/include/llvm/IR/Metadata.h:1051
¶llvm::MDNode::Header& getHeader()
llvm::MDNode::Header& getHeader()
Declared at: llvm/include/llvm/IR/Metadata.h:1049
¶static inline llvm::MDTuple* getIfExists(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
static inline llvm::MDTuple* getIfExists(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
Declared at: llvm/include/llvm/IR/Metadata.h:1092
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Metadata*> MDs
¶static llvm::MDNode* getMostGenericAliasScope(
llvm::MDNode* A,
llvm::MDNode* B)
static llvm::MDNode* getMostGenericAliasScope(
llvm::MDNode* A,
llvm::MDNode* B)
Declared at: llvm/include/llvm/IR/Metadata.h:1321
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶static llvm::MDNode*
getMostGenericAlignmentOrDereferenceable(
llvm::MDNode* A,
llvm::MDNode* B)
static llvm::MDNode*
getMostGenericAlignmentOrDereferenceable(
llvm::MDNode* A,
llvm::MDNode* B)
Declared at: llvm/include/llvm/IR/Metadata.h:1322
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶static llvm::MDNode* getMostGenericFPMath(
llvm::MDNode* A,
llvm::MDNode* B)
static llvm::MDNode* getMostGenericFPMath(
llvm::MDNode* A,
llvm::MDNode* B)
Declared at: llvm/include/llvm/IR/Metadata.h:1319
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶static llvm::MDNode* getMostGenericRange(
llvm::MDNode* A,
llvm::MDNode* B)
static llvm::MDNode* getMostGenericRange(
llvm::MDNode* A,
llvm::MDNode* B)
Declared at: llvm/include/llvm/IR/Metadata.h:1320
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶static llvm::MDNode* getMostGenericTBAA(
llvm::MDNode* A,
llvm::MDNode* B)
static llvm::MDNode* getMostGenericTBAA(
llvm::MDNode* A,
llvm::MDNode* B)
Declared at: llvm/include/llvm/IR/Metadata.h:1318
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶unsigned int getNumOperands() const
unsigned int getNumOperands() const
Description
Return number of MDNode operands.
Declared at: llvm/include/llvm/IR/Metadata.h:1298
¶unsigned int getNumUnresolved() const
unsigned int getNumUnresolved() const
Declared at: llvm/include/llvm/IR/Metadata.h:1218
¶const llvm::MDOperand& getOperand(
unsigned int I) const
const llvm::MDOperand& getOperand(
unsigned int I) const
Declared at: llvm/include/llvm/IR/Metadata.h:1292
Parameters
- unsigned int I
¶static inline llvm::TempMDTuple getTemporary(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
static inline llvm::TempMDTuple getTemporary(
llvm::LLVMContext& Context,
ArrayRef<llvm::Metadata*> MDs)
Declared at: llvm/include/llvm/IR/Metadata.h:1096
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Metadata*> MDs
¶void handleChangedOperand(void* Ref,
llvm::Metadata* New)
void handleChangedOperand(void* Ref,
llvm::Metadata* New)
Declared at: llvm/include/llvm/IR/Metadata.h:1238
Parameters
- void* Ref
- llvm::Metadata* New
¶static llvm::MDNode* intersect(llvm::MDNode* A,
llvm::MDNode* B)
static llvm::MDNode* intersect(llvm::MDNode* A,
llvm::MDNode* B)
Declared at: llvm/include/llvm/IR/Metadata.h:1317
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶bool isDistinct() const
bool isDistinct() const
Declared at: llvm/include/llvm/IR/Metadata.h:1127
¶bool isResolved() const
bool isResolved() const
Description
Check if node is fully resolved. If \a isTemporary(), this always returns \c false; if \a isDistinct(), this always returns \c true. If \a isUniqued(), returns \c true if this has already dropped RAUW support (because all operands are resolved). As forward declarations are resolved, their containers should get resolved automatically. However, if this (or one of its operands) is involved in a cycle, \a resolveCycles() needs to be called explicitly.
Declared at: llvm/include/llvm/IR/Metadata.h:1124
¶bool isTBAAVtableAccess() const
bool isTBAAVtableAccess() const
Description
Check whether MDNode is a vtable access.
Declared at: llvm/include/llvm/IR/Metadata.h:1313
¶bool isTemporary() const
bool isTemporary() const
Declared at: llvm/include/llvm/IR/Metadata.h:1128
¶bool isUniqued() const
bool isUniqued() const
Declared at: llvm/include/llvm/IR/Metadata.h:1126
¶void makeDistinct()
void makeDistinct()
Description
Mutate this to be "distinct". Mutate this so that \a isDistinct().
Declared at: llvm/include/llvm/IR/Metadata.h:1258
¶void makeUniqued()
void makeUniqued()
Description
Mutate this to be "uniqued". Mutate this so that \a isUniqued().
Declared at: llvm/include/llvm/IR/Metadata.h:1252
¶llvm::MDOperand* mutable_begin()
llvm::MDOperand* mutable_begin()
Declared at: llvm/include/llvm/IR/Metadata.h:1077
¶llvm::MDOperand* mutable_end()
llvm::MDOperand* mutable_end()
Declared at: llvm/include/llvm/IR/Metadata.h:1078
¶llvm::MDNode::mutable_op_range mutable_operands()
llvm::MDNode::mutable_op_range mutable_operands()
Declared at: llvm/include/llvm/IR/Metadata.h:1082
¶llvm::MDNode::op_iterator op_begin() const
llvm::MDNode::op_iterator op_begin() const
Declared at: llvm/include/llvm/IR/Metadata.h:1282
¶llvm::MDNode::op_iterator op_end() const
llvm::MDNode::op_iterator op_end() const
Declared at: llvm/include/llvm/IR/Metadata.h:1286
¶ArrayRef<llvm::MDOperand> operands() const
ArrayRef<llvm::MDOperand> operands() const
Declared at: llvm/include/llvm/IR/Metadata.h:1290
¶void printTree(
llvm::raw_ostream& OS,
llvm::ModuleSlotTracker& MST,
const llvm::Module* M = nullptr) const
void printTree(
llvm::raw_ostream& OS,
llvm::ModuleSlotTracker& MST,
const llvm::Module* M = nullptr) const
Declared at: llvm/include/llvm/IR/Metadata.h:1190
Parameters
- llvm::raw_ostream& OS
- llvm::ModuleSlotTracker& MST
- const llvm::Module* M = nullptr
¶void printTree(
llvm::raw_ostream& OS,
const llvm::Module* M = nullptr) const
void printTree(
llvm::raw_ostream& OS,
const llvm::Module* M = nullptr) const
Description
Print in tree shape. Prints definition of \c this in tree shape. If \c M is provided, metadata nodes will be numbered canonically; otherwise, pointer addresses are substituted. @ {
Declared at: llvm/include/llvm/IR/Metadata.h:1189
Parameters
- llvm::raw_ostream& OS
- const llvm::Module* M = nullptr
¶void replaceAllUsesWith(llvm::Metadata* MD)
void replaceAllUsesWith(llvm::Metadata* MD)
Description
RAUW a temporary.
Declared at: llvm/include/llvm/IR/Metadata.h:1133
Parameters
- llvm::Metadata* MD
¶void replaceOperandWith(unsigned int I,
llvm::Metadata* New)
void replaceOperandWith(unsigned int I,
llvm::Metadata* New)
Description
Replace a specific operand.
Declared at: llvm/include/llvm/IR/Metadata.h:1111
Parameters
- unsigned int I
- llvm::Metadata* New
¶template <class T>
static std::enable_if_t<
std::is_base_of<MDNode, T>::value,
T*>
replaceWithDistinct(
std::unique_ptr<T, TempMDNodeDeleter> N)
template <class T>
static std::enable_if_t<
std::is_base_of<MDNode, T>::value,
T*>
replaceWithDistinct(
std::unique_ptr<T, TempMDNodeDeleter> N)
Description
Replace a temporary node with a distinct one. Create a distinct version of \c N -- in place, if possible -- and return it. Takes ownership of the temporary node.
Declared at: llvm/include/llvm/IR/Metadata.h:1178
Templates
- T
Parameters
- std::unique_ptr<T, TempMDNodeDeleter> N
¶llvm::MDNode* replaceWithDistinctImpl()
llvm::MDNode* replaceWithDistinctImpl()
Declared at: llvm/include/llvm/IR/Metadata.h:1210
¶template <class T>
static std::enable_if_t<
std::is_base_of<MDNode, T>::value,
T*>
replaceWithPermanent(
std::unique_ptr<T, TempMDNodeDeleter> N)
template <class T>
static std::enable_if_t<
std::is_base_of<MDNode, T>::value,
T*>
replaceWithPermanent(
std::unique_ptr<T, TempMDNodeDeleter> N)
Description
Replace a temporary node with a permanent one. Try to create a uniqued version of \c N -- in place, if possible -- and return it. If \c N cannot be uniqued, return a distinct node instead.
Declared at: llvm/include/llvm/IR/Metadata.h:1156
Templates
- T
Parameters
- std::unique_ptr<T, TempMDNodeDeleter> N
¶llvm::MDNode* replaceWithPermanentImpl()
llvm::MDNode* replaceWithPermanentImpl()
Description
@ }
Declared at: llvm/include/llvm/IR/Metadata.h:1208
¶template <class T>
static std::enable_if_t<
std::is_base_of<MDNode, T>::value,
T*>
replaceWithUniqued(
std::unique_ptr<T, TempMDNodeDeleter> N)
template <class T>
static std::enable_if_t<
std::is_base_of<MDNode, T>::value,
T*>
replaceWithUniqued(
std::unique_ptr<T, TempMDNodeDeleter> N)
Description
Replace a temporary node with a uniqued one. Create a uniqued version of \c N -- in place, if possible -- and return it. Takes ownership of the temporary node.
Declared at: llvm/include/llvm/IR/Metadata.h:1168
Templates
- T
Parameters
- std::unique_ptr<T, TempMDNodeDeleter> N
¶llvm::MDNode* replaceWithUniquedImpl()
llvm::MDNode* replaceWithUniquedImpl()
Declared at: llvm/include/llvm/IR/Metadata.h:1209
¶void resize(size_t NumOps)
void resize(size_t NumOps)
Description
Resize the node to hold \a NumOps operands.
Declared at: llvm/include/llvm/IR/Metadata.h:1230
Parameters
- size_t NumOps
¶void resolve()
void resolve()
Description
Resolve a unique, unresolved node.
Declared at: llvm/include/llvm/IR/Metadata.h:1148
¶void resolveAfterOperandChange(
llvm::Metadata* Old,
llvm::Metadata* New)
void resolveAfterOperandChange(
llvm::Metadata* Old,
llvm::Metadata* New)
Declared at: llvm/include/llvm/IR/Metadata.h:1243
Parameters
- llvm::Metadata* Old
- llvm::Metadata* New
¶void resolveCycles()
void resolveCycles()
Description
Resolve cycles. Once all forward declarations have been resolved, force cycles to be resolved.
Declared at: llvm/include/llvm/IR/Metadata.h:1145
¶void setNumUnresolved(unsigned int N)
void setNumUnresolved(unsigned int N)
Declared at: llvm/include/llvm/IR/Metadata.h:1220
Parameters
- unsigned int N
¶void setOperand(unsigned int I,
llvm::Metadata* New)
void setOperand(unsigned int I,
llvm::Metadata* New)
Description
Set an operand. Sets the operand directly, without worrying about uniquing.
Declared at: llvm/include/llvm/IR/Metadata.h:1216
Parameters
- unsigned int I
- llvm::Metadata* New
¶void storeDistinctInContext()
void storeDistinctInContext()
Declared at: llvm/include/llvm/IR/Metadata.h:1221
¶template <class T, class StoreT>
static T* storeImpl(
T* N,
llvm::Metadata::StorageType Storage,
StoreT& Store)
template <class T, class StoreT>
static T* storeImpl(
T* N,
llvm::Metadata::StorageType Storage,
StoreT& Store)
Declared at: llvm/include/llvm/IR/Metadata.h:1223
Templates
- T
- StoreT
Parameters
- T* N
- llvm::Metadata::StorageType Storage
- StoreT& Store
¶template <class T>
static T* storeImpl(
T* N,
llvm::Metadata::StorageType Storage)
template <class T>
static T* storeImpl(
T* N,
llvm::Metadata::StorageType Storage)
Declared at: llvm/include/llvm/IR/Metadata.h:1224
Templates
- T
Parameters
- T* N
- llvm::Metadata::StorageType Storage
¶llvm::MDNode* uniquify()
llvm::MDNode* uniquify()
Declared at: llvm/include/llvm/IR/Metadata.h:1261
¶~MDNode()
~MDNode()
Declared at: llvm/include/llvm/IR/Metadata.h:1060