class MDNode
Declaration
class MDNode : public Metadata { /* full declaration omitted */ };
Declared at: llvm/include/llvm/IR/Metadata.h:872
Inherits from: Metadata
Member Variables
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 = <null expr>)
- 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)
- public static void deleteTemporary(llvm::MDNode * N)
- protected void dropAllReferences()
- 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)
- 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
- public const llvm::MDOperand & getOperand(unsigned int I) const
- public static inline llvm::TempMDTuple getTemporary(llvm::LLVMContext & Context, ArrayRef<llvm::Metadata *> MDs)
- 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
- protected llvm::MDOperand * mutable_begin()
- protected llvm::MDOperand * mutable_end()
- public llvm::MDNode::mutable_op_range mutable_operands()
- public llvm::MDNode::op_iterator op_begin() const
- public llvm::MDNode::op_iterator op_end() const
- public llvm::MDNode::op_range operands() const
- public void replaceAllUsesWith(llvm::Metadata * MD)
- public void replaceOperandWith(unsigned int I, llvm::Metadata * New)
- public template <class T>static typename std::enable_if<std::is_base_of<MDNode, T>::value, T *>::type replaceWithDistinct(std::unique_ptr<T, TempMDNodeDeleter> N)
- public template <class T>static typename std::enable_if<std::is_base_of<MDNode, T>::value, T *>::type replaceWithPermanent(std::unique_ptr<T, TempMDNodeDeleter> N)
- public template <class T>static typename std::enable_if<std::is_base_of<MDNode, T>::value, T *>::type replaceWithUniqued(std::unique_ptr<T, TempMDNodeDeleter> N)
- public void resolve()
- public void resolveCycles()
- protected void setOperand(unsigned int I, llvm::Metadata * New)
- protected void storeDistinctInContext()
- protected template <class T>static T * storeImpl(T * N, llvm::Metadata::StorageType Storage)
- protected template <class T, class StoreT>static T * storeImpl(T * N, llvm::Metadata::StorageType Storage, StoreT & Store)
- 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 = <null expr>)
MDNode(
llvm::LLVMContext& Context,
unsigned int ID,
llvm::Metadata::StorageType Storage,
ArrayRef<llvm::Metadata*> Ops1,
ArrayRef<llvm::Metadata*> Ops2 = <null expr>)
Declared at: llvm/include/llvm/IR/Metadata.h:882
Parameters
- llvm::LLVMContext& Context
- unsigned int ID
- llvm::Metadata::StorageType Storage
- ArrayRef<llvm::Metadata*> Ops1
- ArrayRef<llvm::Metadata*> Ops2 = <null expr>
¶MDNode(const llvm::MDNode&)
MDNode(const llvm::MDNode&)
Declared at: llvm/include/llvm/IR/Metadata.h:911
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:1086
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:924
¶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:1101
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶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:930
Parameters
- llvm::MDNode* N
¶void dropAllReferences()
void dropAllReferences()
Declared at: llvm/include/llvm/IR/Metadata.h:899
¶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:915
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Metadata*> MDs
¶llvm::LLVMContext& getContext() const
llvm::LLVMContext& getContext() const
Declared at: llvm/include/llvm/IR/Metadata.h:932
¶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:918
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Metadata*> MDs
¶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:916
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:1106
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:1107
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:1104
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:1105
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:1103
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:1083
¶const llvm::MDOperand& getOperand(
unsigned int I) const
const llvm::MDOperand& getOperand(
unsigned int I) const
Declared at: llvm/include/llvm/IR/Metadata.h:1077
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:920
Parameters
- llvm::LLVMContext& Context
- ArrayRef<llvm::Metadata*> MDs
¶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:1102
Parameters
- llvm::MDNode* A
- llvm::MDNode* B
¶bool isDistinct() const
bool isDistinct() const
Declared at: llvm/include/llvm/IR/Metadata.h:951
¶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:948
¶bool isTBAAVtableAccess() const
bool isTBAAVtableAccess() const
Description
Check whether MDNode is a vtable access.
Declared at: llvm/include/llvm/IR/Metadata.h:1098
¶bool isTemporary() const
bool isTemporary() const
Declared at: llvm/include/llvm/IR/Metadata.h:952
¶bool isUniqued() const
bool isUniqued() const
Declared at: llvm/include/llvm/IR/Metadata.h:950
¶llvm::MDOperand* mutable_begin()
llvm::MDOperand* mutable_begin()
Declared at: llvm/include/llvm/IR/Metadata.h:901
¶llvm::MDOperand* mutable_end()
llvm::MDOperand* mutable_end()
Declared at: llvm/include/llvm/IR/Metadata.h:902
¶llvm::MDNode::mutable_op_range mutable_operands()
llvm::MDNode::mutable_op_range mutable_operands()
Declared at: llvm/include/llvm/IR/Metadata.h:906
¶llvm::MDNode::op_iterator op_begin() const
llvm::MDNode::op_iterator op_begin() const
Declared at: llvm/include/llvm/IR/Metadata.h:1067
¶llvm::MDNode::op_iterator op_end() const
llvm::MDNode::op_iterator op_end() const
Declared at: llvm/include/llvm/IR/Metadata.h:1071
¶llvm::MDNode::op_range operands() const
llvm::MDNode::op_range operands() const
Declared at: llvm/include/llvm/IR/Metadata.h:1075
¶void replaceAllUsesWith(llvm::Metadata* MD)
void replaceAllUsesWith(llvm::Metadata* MD)
Description
RAUW a temporary.
Declared at: llvm/include/llvm/IR/Metadata.h:957
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:935
Parameters
- unsigned int I
- llvm::Metadata* New
¶template <class T>
static typename std::enable_if<
std::is_base_of<MDNode, T>::value,
T*>::type
replaceWithDistinct(
std::unique_ptr<T, TempMDNodeDeleter> N)
template <class T>
static typename std::enable_if<
std::is_base_of<MDNode, T>::value,
T*>::type
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:1002
Templates
- T
Parameters
- std::unique_ptr<T, TempMDNodeDeleter> N
¶template <class T>
static typename std::enable_if<
std::is_base_of<MDNode, T>::value,
T*>::type
replaceWithPermanent(
std::unique_ptr<T, TempMDNodeDeleter> N)
template <class T>
static typename std::enable_if<
std::is_base_of<MDNode, T>::value,
T*>::type
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:980
Templates
- T
Parameters
- std::unique_ptr<T, TempMDNodeDeleter> N
¶template <class T>
static typename std::enable_if<
std::is_base_of<MDNode, T>::value,
T*>::type
replaceWithUniqued(
std::unique_ptr<T, TempMDNodeDeleter> N)
template <class T>
static typename std::enable_if<
std::is_base_of<MDNode, T>::value,
T*>::type
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:992
Templates
- T
Parameters
- std::unique_ptr<T, TempMDNodeDeleter> N
¶void resolve()
void resolve()
Description
Resolve a unique, unresolved node.
Declared at: llvm/include/llvm/IR/Metadata.h:972
¶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:969
¶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:1015
Parameters
- unsigned int I
- llvm::Metadata* New
¶void storeDistinctInContext()
void storeDistinctInContext()
Declared at: llvm/include/llvm/IR/Metadata.h:1017
¶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:1020
Templates
- T
Parameters
- T* N
- llvm::Metadata::StorageType Storage
¶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:1019
Templates
- T
- StoreT
Parameters
- T* N
- llvm::Metadata::StorageType Storage
- StoreT& Store
¶~MDNode()
~MDNode()
Declared at: llvm/include/llvm/IR/Metadata.h:884