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, Metadata *Specification, uint32_t NumExtraInhabitants, 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 * | getMostGenericNoaliasAddrspace (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, uint32_t NumExtraInhabitants, DIFlags Flags, ArrayRef< Metadata * > Ops) | |
~DIType ()=default | |
void | init (unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, uint32_t NumExtraInhabitants, DIFlags Flags) |
void | mutate (unsigned Tag, unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, uint32_t NumExtraInhabitants, 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={}) | |
~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={}) | |
~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 1174 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 794 of file DebugInfoMetadata.cpp.
References AlignInBits, Allocated, Annotations, assert(), Associated, BaseType, DataLocation, Discriminator, llvm::LLVMContextImpl::DITypeMap, Elements, File, Flags, llvm::MDNode::getDistinct(), I, Identifier, llvm::LLVMContext::isODRUniquingDebugTypes(), Line, Name, NumExtraInhabitants, OffsetInBits, llvm::LLVMContext::pImpl, Rank, Scope, SizeInBits, Specification, Tag, TemplateParams, and VTableHolder.
Definition at line 1404 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, DIType *Specification=nullptr, uint32_t NumExtraInhabitants=0) | , | ||
(Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits, OffsetInBits, Specification, NumExtraInhabitants, Flags, Elements, RuntimeLang, VTableHolder, TemplateParams, Identifier, Discriminator, DataLocation, Associated, Allocated, Rank, Annotations) | |||
) |
|
inline |
Definition at line 1355 of file DebugInfoMetadata.h.
References getRawAllocated().
|
inline |
Definition at line 1358 of file DebugInfoMetadata.h.
References getRawAllocated().
|
inline |
Definition at line 1372 of file DebugInfoMetadata.h.
References getRawAnnotations().
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1348 of file DebugInfoMetadata.h.
References getRawAssociated().
|
inline |
Definition at line 1351 of file DebugInfoMetadata.h.
References getRawAssociated().
|
inline |
Definition at line 1318 of file DebugInfoMetadata.h.
References getRawBaseType().
Referenced by hasVectorBeenPadded().
|
inline |
Definition at line 1341 of file DebugInfoMetadata.h.
References getRawDataLocation().
|
inline |
Definition at line 1344 of file DebugInfoMetadata.h.
References getRawDataLocation().
|
inline |
Definition at line 1337 of file DebugInfoMetadata.h.
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1319 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 1328 of file DebugInfoMetadata.h.
References llvm::DINode::getStringOperand().
Referenced by llvm::DwarfUnit::constructTypeDIE(), getCommonClassOptions(), and shouldAlwaysEmitCompleteClassType().
|
static |
Definition at line 863 of file DebugInfoMetadata.cpp.
References assert(), llvm::LLVMContextImpl::DITypeMap, Identifier, llvm::LLVMContext::isODRUniquingDebugTypes(), and llvm::LLVMContext::pImpl.
|
inline |
Definition at line 1362 of file DebugInfoMetadata.h.
References getRawRank().
|
inline |
Definition at line 1367 of file DebugInfoMetadata.h.
References getRawRank().
|
inline |
Definition at line 1354 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getAllocated(), and getAllocatedExp().
|
inline |
Definition at line 1371 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getAnnotations().
|
inline |
Definition at line 1347 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getAssociated(), and getAssociatedExp().
|
inline |
Definition at line 1331 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getBaseType().
|
inline |
Definition at line 1340 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getDataLocation(), and getDataLocationExp().
|
inline |
Definition at line 1336 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
|
inline |
Definition at line 1332 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getElements().
|
inline |
Definition at line 1335 of file DebugInfoMetadata.h.
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1361 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getRankConst(), and getRankExp().
|
inline |
Definition at line 1376 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getSpecification().
|
inline |
Definition at line 1334 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getTemplateParams().
|
inline |
Definition at line 1333 of file DebugInfoMetadata.h.
References llvm::MDNode::getOperand().
Referenced by getVTableHolder().
|
inline |
Definition at line 1329 of file DebugInfoMetadata.h.
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1377 of file DebugInfoMetadata.h.
References getRawSpecification().
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1325 of file DebugInfoMetadata.h.
References getRawTemplateParams().
Referenced by llvm::DwarfUnit::constructTypeDIE().
|
inline |
Definition at line 1322 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 1386 of file DebugInfoMetadata.h.
References assert(), Elements, getElements(), llvm::is_contained(), and llvm::MDNode::replaceOperandWith().
|
inline |
Definition at line 1399 of file DebugInfoMetadata.h.
References llvm::MDNode::replaceOperandWith(), and TemplateParams.
|
inline |
Definition at line 1395 of file DebugInfoMetadata.h.
References llvm::MDNode::replaceOperandWith(), and VTableHolder.
|
friend |
Definition at line 1175 of file DebugInfoMetadata.h.
|
friend |
Definition at line 1176 of file DebugInfoMetadata.h.
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t llvm::DICompositeType::AlignInBits |
Definition at line 1264 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 1268 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 = nullptr |
Definition at line 1269 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* llvm::DICompositeType::Associated = nullptr |
Definition at line 1268 of file DebugInfoMetadata.h.
Referenced by buildODRType().
Definition at line 1263 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 1267 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 1267 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 1265 of file DebugInfoMetadata.h.
Referenced by buildODRType(), and replaceElements().
Definition at line 1262 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 1264 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 1266 of file DebugInfoMetadata.h.
Referenced by buildODRType(), and getODRTypeIfExists().
Definition at line 1262 of file DebugInfoMetadata.h.
Referenced by buildODRType().
Definition at line 1262 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 Metadata uint32_t llvm::DICompositeType::NumExtraInhabitants |
Definition at line 1270 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 1264 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 1269 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 1265 of file DebugInfoMetadata.h.
Definition at line 1263 of file DebugInfoMetadata.h.
Referenced by buildODRType().
Definition at line 1263 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 Metadata* llvm::DICompositeType::Specification = nullptr |
Definition at line 1270 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned llvm::DICompositeType::Tag |
Definition at line 1262 of file DebugInfoMetadata.h.
Referenced by buildODRType().
unsigned MDString Metadata unsigned Metadata Metadata uint64_t uint32_t uint64_t DIFlags Metadata unsigned Metadata Metadata* llvm::DICompositeType::TemplateParams = nullptr |
Definition at line 1266 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 1265 of file DebugInfoMetadata.h.
Referenced by buildODRType(), and replaceVTableHolder().