LLVM  14.0.0git
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Friends | List of all members
llvm::DINode Class Reference

Tagged DWARF-like metadata node. More...

#include "llvm/IR/DebugInfoMetadata.h"

Inheritance diagram for llvm::DINode:
Inheritance graph
Collaboration diagram for llvm::DINode:
Collaboration graph

Public Types

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 >

Public Member Functions

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. More...
LLVMContextgetContext () const
void replaceOperandWith (unsigned I, Metadata *New)
 Replace a specific operand. More...
bool isResolved () const
 Check if node is fully resolved. More...
bool isUniqued () const
bool isDistinct () const
bool isTemporary () const
void replaceAllUsesWith (Metadata *MD)
 RAUW a temporary. More...
void resolveCycles ()
 Resolve cycles. More...
void resolve ()
 Resolve a unique, unresolved node. More...
op_iterator op_begin () const
op_iterator op_end () const
op_range operands () const
const MDOperandgetOperand (unsigned I) const
unsigned getNumOperands () const
 Return number of MDNode operands. More...
bool isTBAAVtableAccess () const
 Check whether MDNode is a vtable access. More...

Static Public Member Functions

static DIFlags getFlag (StringRef Flag)
static StringRef getFlagString (DIFlags Flag)
static DIFlags splitFlags (DIFlags Flags, SmallVectorImpl< DIFlags > &SplitFlags)
 Split up a flags bitfield. More...
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. More...
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. More...
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. More...
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. More...
static bool classof (const Metadata *MD)
 Methods for support type inquiry through isa, cast, and dyn_cast: More...
static MDNodeconcatenate (MDNode *A, MDNode *B)
 Methods for metadata merging. More...
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)

Protected Member Functions

 DINode (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, ArrayRef< Metadata * > Ops1, ArrayRef< Metadata * > Ops2=None)
 ~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. More...
- Protected Member Functions inherited from llvm::MDNode
 MDNode (LLVMContext &Context, unsigned ID, StorageType Storage, ArrayRef< Metadata * > Ops1, ArrayRef< Metadata * > Ops2=None)
 ~MDNode ()=default
void * operator new (size_t Size, unsigned NumOps)
void operator delete (void *Mem)
void operator delete (void *, unsigned)
 Required by std, but never called. More...
void operator delete (void *, unsigned, bool)
 Required by std, but never called. More...
void dropAllReferences ()
MDOperandmutable_begin ()
MDOperandmutable_end ()
mutable_op_range mutable_operands ()
void setOperand (unsigned I, Metadata *New)
 Set an operand. More...
void storeDistinctInContext ()

Static Protected Member Functions

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)


class LLVMContextImpl
class MDNode

Additional Inherited Members

- Protected Types inherited from llvm::MDNode
using mutable_op_range = iterator_range< MDOperand * >
 Active type of storage. More...

Detailed Description

Tagged DWARF-like metadata node.

A metadata node with a DWARF tag (i.e., a constant named DW_TAG_*, defined in llvm/BinaryFormat/Dwarf.h). Called DINode because it's potentially used for non-DWARF output.

Definition at line 127 of file DebugInfoMetadata.h.

Member Enumeration Documentation

◆ DIFlags

Debug info flags.

The three accessibility flags are mutually exclusive and rolled together in the first two bits.


Definition at line 166 of file DebugInfoMetadata.h.

Constructor & Destructor Documentation

◆ DINode()

llvm::DINode::DINode ( LLVMContext C,
unsigned  ID,
StorageType  Storage,
unsigned  Tag,
ArrayRef< Metadata * >  Ops1,
ArrayRef< Metadata * >  Ops2 = None 

Definition at line 132 of file DebugInfoMetadata.h.

References assert(), and llvm::Metadata::SubclassData16.

◆ ~DINode()

llvm::DINode::~DINode ( )

Member Function Documentation

◆ classof()

static bool llvm::DINode::classof ( const Metadata MD)

Definition at line 186 of file DebugInfoMetadata.h.

References llvm::Metadata::getMetadataID().

◆ getCanonicalMDString()

static MDString* llvm::DINode::getCanonicalMDString ( LLVMContext Context,
StringRef  S 

Definition at line 150 of file DebugInfoMetadata.h.

References Context, llvm::MDString::get(), and S.

◆ getFlag()

DINode::DIFlags DINode::getFlag ( StringRef  Flag)

◆ getFlagString()

StringRef DINode::getFlagString ( DIFlags  Flag)

Definition at line 190 of file DebugInfoMetadata.cpp.

◆ getOperandAs()

template<class Ty >
Ty* llvm::DINode::getOperandAs ( unsigned  I) const

Definition at line 140 of file DebugInfoMetadata.h.

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

◆ getStringOperand()

StringRef llvm::DINode::getStringOperand ( unsigned  I) const

◆ getTag()

dwarf::Tag llvm::DINode::getTag ( ) const

◆ setTag()

void llvm::DINode::setTag ( unsigned  Tag)

Allow subclasses to mutate the tag.

Definition at line 157 of file DebugInfoMetadata.h.

References llvm::Metadata::SubclassData16.

Referenced by llvm::DIType::mutate().

◆ splitFlags()

DINode::DIFlags DINode::splitFlags ( DIFlags  Flags,
SmallVectorImpl< DIFlags > &  SplitFlags 

Split up a flags bitfield.

Split Flags into SplitFlags, a vector of its components. Returns any remaining (unrecognized) bits.

Definition at line 200 of file DebugInfoMetadata.cpp.

References FlagAccessibility, and FlagPtrToMemberRep.

Friends And Related Function Documentation

◆ LLVMContextImpl

friend class LLVMContextImpl

Definition at line 128 of file DebugInfoMetadata.h.

◆ MDNode

friend class MDNode

Definition at line 129 of file DebugInfoMetadata.h.

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