LLVM 18.0.0git
Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
llvm::GenericDINode Class Reference

Generic tagged DWARF-like metadata node. More...

#include "llvm/IR/DebugInfoMetadata.h"

Inheritance diagram for llvm::GenericDINode:
Inheritance graph
[legend]

Public Member Functions

unsigned getHash () const
 
 DEFINE_MDNODE_GET (GenericDINode,(unsigned Tag, StringRef Header, ArrayRef< Metadata * > DwarfOps),(Tag, Header, DwarfOps)) DEFINE_MDNODE_GET(GenericDINode
 
unsigned MDString ArrayRef< Metadata * > DwarfOps TempGenericDINode clone () const
 Return a (temporary) clone of this.
 
dwarf::Tag getTag () const
 
StringRef getHeader () const
 
MDStringgetRawHeader () const
 
op_iterator dwarf_op_begin () const
 
op_iterator dwarf_op_end () const
 
op_range dwarf_operands () const
 
unsigned getNumDwarfOperands () const
 
const MDOperandgetDwarfOperand (unsigned I) const
 
void replaceDwarfOperandWith (unsigned I, Metadata *New)
 
- Public Member Functions inherited from llvm::DINode
dwarf::Tag getTag () const
 
- Public Member Functions inherited from llvm::MDNode
 MDNode (const MDNode &)=delete
 
void operator= (const MDNode &)=delete
 
void * operator new (size_t)=delete
 
TempMDNode clone () const
 Create a (temporary) clone of this.
 
LLVMContextgetContext () const
 
void replaceOperandWith (unsigned I, Metadata *New)
 Replace a specific operand.
 
bool isResolved () const
 Check if node is fully resolved.
 
bool isUniqued () const
 
bool isDistinct () const
 
bool isTemporary () const
 
void replaceAllUsesWith (Metadata *MD)
 RAUW a temporary.
 
void resolveCycles ()
 Resolve cycles.
 
void resolve ()
 Resolve a unique, unresolved node.
 
op_iterator op_begin () const
 
op_iterator op_end () const
 
ArrayRef< MDOperandoperands () const
 
const MDOperandgetOperand (unsigned I) const
 
unsigned getNumOperands () const
 Return number of MDNode operands.
 
bool isTBAAVtableAccess () const
 Check whether MDNode is a vtable access.
 
void printTree (raw_ostream &OS, const Module *M=nullptr) const
 Print in tree shape.
 
void printTree (raw_ostream &OS, ModuleSlotTracker &MST, const Module *M=nullptr) const
 
void dumpTree () const
 User-friendly dump in tree shape.
 
void dumpTree (const Module *M) const
 

Static Public Member Functions

static bool classof (const Metadata *MD)
 
- Static Public Member Functions inherited from llvm::DINode
static DIFlags getFlag (StringRef Flag)
 
static StringRef getFlagString (DIFlags Flag)
 
static DIFlags splitFlags (DIFlags Flags, SmallVectorImpl< DIFlags > &SplitFlags)
 Split up a flags bitfield.
 
static bool classof (const Metadata *MD)
 
- Static Public Member Functions inherited from llvm::MDNode
static MDTupleget (LLVMContext &Context, ArrayRef< Metadata * > MDs)
 
static MDTuplegetIfExists (LLVMContext &Context, ArrayRef< Metadata * > MDs)
 
static MDTuplegetDistinct (LLVMContext &Context, ArrayRef< Metadata * > MDs)
 
static TempMDTuple getTemporary (LLVMContext &Context, ArrayRef< Metadata * > MDs)
 
static void deleteTemporary (MDNode *N)
 Deallocate a node created by getTemporary.
 
template<class T >
static std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > replaceWithPermanent (std::unique_ptr< T, TempMDNodeDeleter > N)
 Replace a temporary node with a permanent one.
 
template<class T >
static std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > replaceWithUniqued (std::unique_ptr< T, TempMDNodeDeleter > N)
 Replace a temporary node with a uniqued one.
 
template<class T >
static std::enable_if_t< std::is_base_of< MDNode, T >::value, T * > replaceWithDistinct (std::unique_ptr< T, TempMDNodeDeleter > N)
 Replace a temporary node with a distinct one.
 
static bool classof (const Metadata *MD)
 Methods for support type inquiry through isa, cast, and dyn_cast:
 
static MDNodeconcatenate (MDNode *A, MDNode *B)
 Methods for metadata merging.
 
static MDNodeintersect (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericTBAA (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericFPMath (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericRange (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericAliasScope (MDNode *A, MDNode *B)
 
static MDNodegetMostGenericAlignmentOrDereferenceable (MDNode *A, MDNode *B)
 
static MDNodegetMergedProfMetadata (MDNode *A, MDNode *B, const Instruction *AInstr, const Instruction *BInstr)
 Merge !prof metadata from two instructions.
 

Public Attributes

unsigned Tag
 
unsigned MDStringHeader
 
unsigned MDString ArrayRef< Metadata * > DwarfOps
 
unsigned MDString ArrayRef< Metadata * > Tag
 
unsigned MDString ArrayRef< Metadata * > Header
 

Friends

class LLVMContextImpl
 
class MDNode
 

Additional Inherited Members

- Public Types inherited from llvm::DINode
enum  DIFlags : uint32_t { FlagAccessibility = FlagPrivate | FlagProtected | FlagPublic , FlagPtrToMemberRep }
 Debug info flags. More...
 
- Public Types inherited from llvm::MDNode
using op_iterator = const MDOperand *
 
using op_range = iterator_range< op_iterator >
 
- Protected Types inherited from llvm::MDNode
using mutable_op_range = iterator_range< MDOperand * >
 
 Active type of storage. More...
- Protected Member Functions inherited from llvm::DINode
 DINode (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, ArrayRef< Metadata * > Ops1, ArrayRef< Metadata * > Ops2=std::nullopt)
 
 ~DINode ()=default
 
template<class Ty >
Ty * getOperandAs (unsigned I) const
 
StringRef getStringOperand (unsigned I) const
 
void setTag (unsigned Tag)
 Allow subclasses to mutate the tag.
 
- Protected Member Functions inherited from llvm::MDNode
 MDNode (LLVMContext &Context, unsigned ID, StorageType Storage, ArrayRef< Metadata * > Ops1, ArrayRef< Metadata * > Ops2=std::nullopt)
 
 ~MDNode ()=default
 
void * operator new (size_t Size, size_t NumOps, StorageType Storage)
 
void operator delete (void *Mem)
 
void operator delete (void *, unsigned)
 Required by std, but never called.
 
void operator delete (void *, unsigned, bool)
 Required by std, but never called.
 
void dropAllReferences ()
 
MDOperandmutable_begin ()
 
MDOperandmutable_end ()
 
mutable_op_range mutable_operands ()
 
void setOperand (unsigned I, Metadata *New)
 Set an operand.
 
unsigned getNumUnresolved () const
 
void setNumUnresolved (unsigned N)
 
void storeDistinctInContext ()
 
void resize (size_t NumOps)
 Resize the node to hold NumOps operands.
 
- Static Protected Member Functions inherited from llvm::DINode
static MDStringgetCanonicalMDString (LLVMContext &Context, StringRef S)
 
- Static Protected Member Functions inherited from llvm::MDNode
template<class T , class StoreT >
static TstoreImpl (T *N, StorageType Storage, StoreT &Store)
 
template<class T >
static TstoreImpl (T *N, StorageType Storage)
 

Detailed Description

Generic tagged DWARF-like metadata node.

An un-specialized DWARF-like metadata node. The first operand is a (possibly empty) null-separated MDString header that contains arbitrary fields. The remaining operands are dwarf_operands(), and are pointers to other metadata.

Definition at line 230 of file DebugInfoMetadata.h.

Member Function Documentation

◆ classof()

static bool llvm::GenericDINode::classof ( const Metadata MD)
inlinestatic

Definition at line 294 of file DebugInfoMetadata.h.

References llvm::Metadata::getMetadataID().

◆ clone()

unsigned MDString ArrayRef< Metadata * > DwarfOps TempGenericDINode llvm::GenericDINode::clone ( ) const
inline

Return a (temporary) clone of this.

Definition at line 274 of file DebugInfoMetadata.h.

◆ DEFINE_MDNODE_GET()

llvm::GenericDINode::DEFINE_MDNODE_GET ( GenericDINode  ,
(unsigned Tag, StringRef Header, ArrayRef< Metadata * > DwarfOps ,
(Tag, Header, DwarfOps  
)

◆ dwarf_op_begin()

op_iterator llvm::GenericDINode::dwarf_op_begin ( ) const
inline

Definition at line 280 of file DebugInfoMetadata.h.

References llvm::MDNode::op_begin().

Referenced by dwarf_operands().

◆ dwarf_op_end()

op_iterator llvm::GenericDINode::dwarf_op_end ( ) const
inline

Definition at line 281 of file DebugInfoMetadata.h.

References llvm::MDNode::op_end().

Referenced by dwarf_operands().

◆ dwarf_operands()

op_range llvm::GenericDINode::dwarf_operands ( ) const
inline

Definition at line 282 of file DebugInfoMetadata.h.

References dwarf_op_begin(), and dwarf_op_end().

◆ getDwarfOperand()

const MDOperand & llvm::GenericDINode::getDwarfOperand ( unsigned  I) const
inline

Definition at line 287 of file DebugInfoMetadata.h.

References llvm::MDNode::getOperand(), and I.

◆ getHash()

unsigned llvm::GenericDINode::getHash ( ) const
inline

Definition at line 262 of file DebugInfoMetadata.h.

References llvm::Metadata::SubclassData32.

◆ getHeader()

StringRef llvm::GenericDINode::getHeader ( ) const
inline

Definition at line 277 of file DebugInfoMetadata.h.

References llvm::DINode::getStringOperand().

◆ getNumDwarfOperands()

unsigned llvm::GenericDINode::getNumDwarfOperands ( ) const
inline

Definition at line 286 of file DebugInfoMetadata.h.

References llvm::MDNode::getNumOperands().

◆ getRawHeader()

MDString * llvm::GenericDINode::getRawHeader ( ) const
inline

Definition at line 278 of file DebugInfoMetadata.h.

◆ getTag()

dwarf::Tag GenericDINode::getTag ( ) const

Definition at line 382 of file DebugInfoMetadata.cpp.

References llvm::Metadata::SubclassData16.

◆ replaceDwarfOperandWith()

void llvm::GenericDINode::replaceDwarfOperandWith ( unsigned  I,
Metadata New 
)
inline

Definition at line 290 of file DebugInfoMetadata.h.

References I, and llvm::MDNode::replaceOperandWith().

Friends And Related Function Documentation

◆ LLVMContextImpl

friend class LLVMContextImpl
friend

Definition at line 231 of file DebugInfoMetadata.h.

◆ MDNode

friend class MDNode
friend

Definition at line 232 of file DebugInfoMetadata.h.

Member Data Documentation

◆ DwarfOps

unsigned MDString ArrayRef<Metadata *> llvm::GenericDINode::DwarfOps

Definition at line 270 of file DebugInfoMetadata.h.

◆ Header [1/2]

unsigned MDString* llvm::GenericDINode::Header

Definition at line 269 of file DebugInfoMetadata.h.

◆ Header [2/2]

unsigned MDString ArrayRef<Metadata *> llvm::GenericDINode::Header

Definition at line 271 of file DebugInfoMetadata.h.

◆ Tag [1/2]

unsigned llvm::GenericDINode::Tag

Definition at line 269 of file DebugInfoMetadata.h.

◆ Tag [2/2]

unsigned MDString ArrayRef<Metadata *> llvm::GenericDINode::Tag

Definition at line 271 of file DebugInfoMetadata.h.


The documentation for this class was generated from the following files: