LLVM 20.0.0git
|
Composite types. More...
#include "llvm/IR/DebugInfoMetadata.h"
Static Public Member Functions | |
static DICompositeType * | getODRTypeIfExists (LLVMContext &Context, MDString &Identifier) |
static DICompositeType * | buildODRType (LLVMContext &Context, MDString &Identifier, unsigned Tag, MDString *Name, Metadata *File, unsigned Line, Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags, Metadata *Elements, unsigned RuntimeLang, Metadata *VTableHolder, Metadata *TemplateParams, Metadata *Discriminator, Metadata *DataLocation, Metadata *Associated, Metadata *Allocated, Metadata *Rank, Metadata *Annotations) |
Build a DICompositeType with the given ODR identifier. | |
static bool | classof (const Metadata *MD) |
Static Public Member Functions inherited from llvm::DIType | |
static bool | classof (const Metadata *MD) |
Static Public Member Functions inherited from llvm::DIScope | |
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 MDTuple * | get (LLVMContext &Context, ArrayRef< Metadata * > MDs) |
static MDTuple * | getIfExists (LLVMContext &Context, ArrayRef< Metadata * > MDs) |
static MDTuple * | getDistinct (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 MDNode * | concatenate (MDNode *A, MDNode *B) |
Methods for metadata merging. | |
static MDNode * | intersect (MDNode *A, MDNode *B) |
static MDNode * | getMostGenericTBAA (MDNode *A, MDNode *B) |
static MDNode * | getMostGenericFPMath (MDNode *A, MDNode *B) |
static MDNode * | getMostGenericRange (MDNode *A, MDNode *B) |
static MDNode * | getMostGenericAliasScope (MDNode *A, MDNode *B) |
static MDNode * | getMostGenericAlignmentOrDereferenceable (MDNode *A, MDNode *B) |
static MDNode * | getMergedProfMetadata (MDNode *A, MDNode *B, const Instruction *AInstr, const Instruction *BInstr) |
Merge !prof metadata from two instructions. | |
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 > |
Public Types inherited from llvm::Metadata | |
enum | MetadataKind |
Protected Types inherited from llvm::MDNode | |
using | mutable_op_range = iterator_range< MDOperand * > |
Protected Types inherited from llvm::Metadata | |
enum | StorageType { Uniqued , Distinct , Temporary } |
Active type of storage. More... | |
Protected Member Functions inherited from llvm::DIType | |
DIType (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags, ArrayRef< Metadata * > Ops) | |
~DIType ()=default | |
void | init (unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags) |
void | mutate (unsigned Tag, unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags) |
Change fields in place. | |
Protected Member Functions inherited from llvm::DIScope | |
DIScope (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, ArrayRef< Metadata * > Ops) | |
~DIScope ()=default | |
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 () |
MDOperand * | mutable_begin () |
MDOperand * | mutable_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. | |
Protected Member Functions inherited from llvm::Metadata | |
Metadata (unsigned ID, StorageType Storage) | |
~Metadata ()=default | |
void | handleChangedOperand (void *, Metadata *) |
Default handling of a changed operand, which asserts. | |
Static Protected Member Functions inherited from llvm::DINode | |
static MDString * | getCanonicalMDString (LLVMContext &Context, StringRef S) |
Static Protected Member Functions inherited from llvm::MDNode | |
template<class T , class StoreT > | |
static T * | storeImpl (T *N, StorageType Storage, StoreT &Store) |
template<class T > | |
static T * | storeImpl (T *N, StorageType Storage) |
Protected Attributes inherited from llvm::Metadata | |
unsigned char | Storage: 7 |
Storage flag for non-uniqued, otherwise unowned, metadata. | |
unsigned char | SubclassData1: 1 |
unsigned short | SubclassData16 = 0 |
unsigned | SubclassData32 = 0 |
Composite types.
TODO: Detach from DerivedTypeBase (split out MDEnumType?). TODO: Create a custom, unrelated node for DW_TAG_array_type.
Definition at line 1152 of file DebugInfoMetadata.h.
|
static |
Build a DICompositeType with the given ODR identifier.
Looks up the mapped DICompositeType for the given ODR Identifier
. If it doesn't exist, creates a new one. If it does exist and isForwardDecl(), and the new arguments would be a definition, mutates the the type in place. In either case, returns the type.
If not LLVMContext::isODRUniquingDebugTypes(), this function returns nullptr.
Definition at line 792 of file DebugInfoMetadata.cpp.
References AlignInBits, Allocated, assert(), Associated, BaseType, DataLocation, Discriminator, llvm::LLVMContextImpl::DITypeMap, Elements, File, Flags, llvm::MDNode::getDistinct(), I, Identifier, llvm::LLVMContext::isODRUniquingDebugTypes(), Line, Name, OffsetInBits, llvm::LLVMContext::pImpl, Rank, Scope, SizeInBits, TemplateParams, and VTableHolder.
Definition at line 1367 of file DebugInfoMetadata.h.
References llvm::Metadata::getMetadataID().
llvm::DICompositeType::DEFINE_MDNODE_GET | ( | DICompositeType | , |
(unsigned Tag, StringRef Name, DIFile *File, unsigned Line, DIScope *Scope, DIType *BaseType, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, DIFlags Flags, DINodeArray Elements, unsigned RuntimeLang, DIType *VTableHolder, DITemplateParameterArray TemplateParams=nullptr, StringRef Identifier="", DIDerivedType *Discriminator=nullptr, Metadata *DataLocation=nullptr, Metadata *Associated=nullptr, Metadata *Allocated=nullptr, Metadata *Rank=nullptr, DINodeArray Annotations=nullptr) | , | ||
(Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits, OffsetInBits, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams, Identifier, Discriminator, DataLocation, Associated, Allocated, Rank, Annotations) | |||
) |
|
inline |
Definition at line 1322 of file DebugInfoMetadata.h.
References getRawAllocated().
|
inline |
Definition at line 1325 of file DebugInfoMetadata.h.
References getRawAllocated().
|
inline |
Definition at line 1339 of file DebugInfoMetadata.h.
References getRawAnnotations().
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1315 of file DebugInfoMetadata.h.
References getRawAssociated().
|
inline |
Definition at line 1318 of file DebugInfoMetadata.h.
References getRawAssociated().
|
inline |
Definition at line 1285 of file DebugInfoMetadata.h.
References getRawBaseType().
Referenced by hasVectorBeenPadded().
|
inline |
Definition at line 1308 of file DebugInfoMetadata.h.
References getRawDataLocation().
|
inline |
Definition at line 1311 of file DebugInfoMetadata.h.
References getRawDataLocation().
|
inline |
Definition at line 1304 of file DebugInfoMetadata.h.
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1286 of file DebugInfoMetadata.h.
References getRawElements().
Referenced by calcArraySize(), llvm::BTFTypeEnum::completeType(), llvm::BTFTypeStruct::completeType(), llvm::BTFTypeEnum64::completeType(), llvm::DwarfUnit::constructTypeDIE(), hasVectorBeenPadded(), and replaceElements().
|
inline |
Definition at line 1295 of file DebugInfoMetadata.h.
References llvm::DINode::getStringOperand().
Referenced by getCommonClassOptions(), and shouldAlwaysEmitCompleteClassType().
|
static |
Definition at line 859 of file DebugInfoMetadata.cpp.
References assert(), llvm::LLVMContextImpl::DITypeMap, Identifier, llvm::LLVMContext::isODRUniquingDebugTypes(), and llvm::LLVMContext::pImpl.
|
inline |
Definition at line 1329 of file DebugInfoMetadata.h.
References getRawRank().
|
inline |
Definition at line 1334 of file DebugInfoMetadata.h.
References getRawRank().
|
inline |
Definition at line 1321 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getAllocated(), and getAllocatedExp().
|
inline |
Definition at line 1338 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getAnnotations().
|
inline |
Definition at line 1314 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getAssociated(), and getAssociatedExp().
|
inline |
Definition at line 1298 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getBaseType().
|
inline |
Definition at line 1307 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getDataLocation(), and getDataLocationExp().
|
inline |
Definition at line 1303 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
|
inline |
Definition at line 1299 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getElements().
|
inline |
Definition at line 1302 of file DebugInfoMetadata.h.
|
inline |
Definition at line 1328 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getRankConst(), and getRankExp().
|
inline |
Definition at line 1301 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getTemplateParams().
|
inline |
Definition at line 1300 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getVTableHolder().
|
inline |
Definition at line 1296 of file DebugInfoMetadata.h.
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1292 of file DebugInfoMetadata.h.
References getRawTemplateParams().
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1289 of file DebugInfoMetadata.h.
References getRawVTableHolder().
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Replace operands.
If this isUniqued() and not isResolved(), on a uniquing collision this will be RAUW'ed and deleted. Use a TrackingMDRef to keep track of its movement if necessary.
Definition at line 1349 of file DebugInfoMetadata.h.
References assert(), Elements, getElements(), llvm::is_contained(), and llvm::MDNode::replaceOperandWith().
|
inline |
Definition at line 1362 of file DebugInfoMetadata.h.
References llvm::MDNode::replaceOperandWith(), and TemplateParams.
|
inline |
Definition at line 1358 of file DebugInfoMetadata.h.
References llvm::MDNode::replaceOperandWith(), and VTableHolder.
|
friend |
Definition at line 1153 of file DebugInfoMetadata.h.
|
friend |
Definition at line 1154 of file DebugInfoMetadata.h.
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t llvm::DICompositeType::AlignInBits |
Definition at line 1234 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata MDString Metadata Metadata Metadata Metadata* llvm::DICompositeType::Allocated = nullptr |
Definition at line 1238 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata MDString Metadata Metadata Metadata Metadata Metadata Metadata* llvm::DICompositeType::Annotations |
Definition at line 1239 of file DebugInfoMetadata.h.
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata MDString Metadata Metadata Metadata* llvm::DICompositeType::Associated = nullptr |
Definition at line 1238 of file DebugInfoMetadata.h.
Referenced by buildODRType().
Definition at line 1233 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata MDString Metadata Metadata* llvm::DICompositeType::DataLocation = nullptr |
Definition at line 1237 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata MDString Metadata* llvm::DICompositeType::Discriminator = nullptr |
Definition at line 1237 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata* llvm::DICompositeType::Elements |
Definition at line 1235 of file DebugInfoMetadata.h.
Referenced by buildODRType(), and replaceElements().
Definition at line 1232 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags llvm::DICompositeType::Flags |
Definition at line 1234 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata MDString* llvm::DICompositeType::Identifier = nullptr |
Definition at line 1236 of file DebugInfoMetadata.h.
Referenced by buildODRType(), and getODRTypeIfExists().
Definition at line 1232 of file DebugInfoMetadata.h.
Referenced by buildODRType().
Definition at line 1232 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t llvm::DICompositeType::OffsetInBits |
Definition at line 1234 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata MDString Metadata Metadata Metadata Metadata Metadata* llvm::DICompositeType::Rank = nullptr |
Definition at line 1239 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned llvm::DICompositeType::RuntimeLang |
Definition at line 1235 of file DebugInfoMetadata.h.
Definition at line 1233 of file DebugInfoMetadata.h.
Referenced by buildODRType().
Definition at line 1233 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned llvm::DICompositeType::Tag |
Definition at line 1232 of file DebugInfoMetadata.h.
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata* llvm::DICompositeType::TemplateParams = nullptr |
Definition at line 1236 of file DebugInfoMetadata.h.
Referenced by buildODRType(), and replaceTemplateParams().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata* llvm::DICompositeType::VTableHolder |
Definition at line 1235 of file DebugInfoMetadata.h.
Referenced by buildODRType(), and replaceVTableHolder().