class DICompositeType

Declaration

class DICompositeType : public DIType { /* full declaration omitted */ };

Description

Composite types. TODO: Detach from DerivedTypeBase (split out MDEnumType?). TODO: Create a custom, unrelated node for DW_TAG_array_type.

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1042

Inherits from: DIType

Member Variables

private unsigned int RuntimeLang

Inherited from Metadata:

protected Storage
protected SubclassData1
protected SubclassData16 = 0
protected SubclassData32 = 0

Method Overview

  • private DICompositeType(llvm::LLVMContext & C, llvm::Metadata::StorageType Storage, unsigned int Tag, unsigned int Line, unsigned int RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, llvm::DINode::DIFlags Flags, ArrayRef<llvm::Metadata *> Ops)
  • public static llvm::DICompositeType * buildODRType(llvm::LLVMContext & Context, llvm::MDString & Identifier, unsigned int Tag, llvm::MDString * Name, llvm::Metadata * File, unsigned int Line, llvm::Metadata * Scope, llvm::Metadata * BaseType, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, llvm::DINode::DIFlags Flags, llvm::Metadata * Elements, unsigned int RuntimeLang, llvm::Metadata * VTableHolder, llvm::Metadata * TemplateParams, llvm::Metadata * Discriminator, llvm::Metadata * DataLocation, llvm::Metadata * Associated, llvm::Metadata * Allocated, llvm::Metadata * Rank, llvm::Metadata * Annotations)
  • public static bool classof(const llvm::Metadata * MD)
  • public llvm::TempDICompositeType clone() const
  • private llvm::TempDICompositeType cloneImpl() const
  • public llvm::DIVariable * getAllocated() const
  • public llvm::DIExpression * getAllocatedExp() const
  • public llvm::DINodeArray getAnnotations() const
  • public llvm::DIVariable * getAssociated() const
  • public llvm::DIExpression * getAssociatedExp() const
  • public llvm::DIType * getBaseType() const
  • public llvm::DIVariable * getDataLocation() const
  • public llvm::DIExpression * getDataLocationExp() const
  • public llvm::DIDerivedType * getDiscriminator() const
  • public llvm::DINodeArray getElements() const
  • public llvm::StringRef getIdentifier() const
  • private static llvm::DICompositeType * getImpl(llvm::LLVMContext & Context, unsigned int Tag, llvm::MDString * Name, llvm::Metadata * File, unsigned int Line, llvm::Metadata * Scope, llvm::Metadata * BaseType, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, llvm::DINode::DIFlags Flags, llvm::Metadata * Elements, unsigned int RuntimeLang, llvm::Metadata * VTableHolder, llvm::Metadata * TemplateParams, llvm::MDString * Identifier, llvm::Metadata * Discriminator, llvm::Metadata * DataLocation, llvm::Metadata * Associated, llvm::Metadata * Allocated, llvm::Metadata * Rank, llvm::Metadata * Annotations, llvm::Metadata::StorageType Storage, bool ShouldCreate = true)
  • private static llvm::DICompositeType * getImpl(llvm::LLVMContext & Context, unsigned int Tag, llvm::StringRef Name, llvm::Metadata * File, unsigned int Line, llvm::DIScope * Scope, llvm::DIType * BaseType, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, llvm::DINode::DIFlags Flags, llvm::DINodeArray Elements, unsigned int RuntimeLang, llvm::DIType * VTableHolder, llvm::DITemplateParameterArray TemplateParams, llvm::StringRef Identifier, llvm::DIDerivedType * Discriminator, llvm::Metadata * DataLocation, llvm::Metadata * Associated, llvm::Metadata * Allocated, llvm::Metadata * Rank, llvm::DINodeArray Annotations, llvm::Metadata::StorageType Storage, bool ShouldCreate = true)
  • public static llvm::DICompositeType * getODRType(llvm::LLVMContext & Context, llvm::MDString & Identifier, unsigned int Tag, llvm::MDString * Name, llvm::Metadata * File, unsigned int Line, llvm::Metadata * Scope, llvm::Metadata * BaseType, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, llvm::DINode::DIFlags Flags, llvm::Metadata * Elements, unsigned int RuntimeLang, llvm::Metadata * VTableHolder, llvm::Metadata * TemplateParams, llvm::Metadata * Discriminator, llvm::Metadata * DataLocation, llvm::Metadata * Associated, llvm::Metadata * Allocated, llvm::Metadata * Rank, llvm::Metadata * Annotations)
  • public static llvm::DICompositeType * getODRTypeIfExists(llvm::LLVMContext & Context, llvm::MDString & Identifier)
  • public llvm::ConstantInt * getRankConst() const
  • public llvm::DIExpression * getRankExp() const
  • public llvm::Metadata * getRawAllocated() const
  • public llvm::Metadata * getRawAnnotations() const
  • public llvm::Metadata * getRawAssociated() const
  • public llvm::Metadata * getRawBaseType() const
  • public llvm::Metadata * getRawDataLocation() const
  • public llvm::Metadata * getRawDiscriminator() const
  • public llvm::Metadata * getRawElements() const
  • public llvm::MDString * getRawIdentifier() const
  • public llvm::Metadata * getRawRank() const
  • public llvm::Metadata * getRawTemplateParams() const
  • public llvm::Metadata * getRawVTableHolder() const
  • public unsigned int getRuntimeLang() const
  • public llvm::DITemplateParameterArray getTemplateParams() const
  • public llvm::DIType * getVTableHolder() const
  • private void mutate(unsigned int Tag, unsigned int Line, unsigned int RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, llvm::DINode::DIFlags Flags)
  • public void replaceElements(llvm::DINodeArray Elements)
  • public void replaceTemplateParams(llvm::DITemplateParameterArray TemplateParams)
  • public void replaceVTableHolder(llvm::DIType * VTableHolder)
  • private ~DICompositeType()

Inherited from DIType:

Inherited from DIScope:

Inherited from DINode:

Inherited from MDNode:

Inherited from Metadata:

Methods

DICompositeType(
    llvm::LLVMContext& C,
    llvm::Metadata::StorageType Storage,
    unsigned int Tag,
    unsigned int Line,
    unsigned int RuntimeLang,
    uint64_t SizeInBits,
    uint32_t AlignInBits,
    uint64_t OffsetInBits,
    llvm::DINode::DIFlags Flags,
    ArrayRef<llvm::Metadata*> Ops)

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1048

Parameters

llvm::LLVMContext& C
llvm::Metadata::StorageType Storage
unsigned int Tag
unsigned int Line
unsigned int RuntimeLang
uint64_t SizeInBits
uint32_t AlignInBits
uint64_t OffsetInBits
llvm::DINode::DIFlags Flags
ArrayRef<llvm::Metadata*> Ops

static llvm::DICompositeType* buildODRType(
    llvm::LLVMContext& Context,
    llvm::MDString& Identifier,
    unsigned int Tag,
    llvm::MDString* Name,
    llvm::Metadata* File,
    unsigned int Line,
    llvm::Metadata* Scope,
    llvm::Metadata* BaseType,
    uint64_t SizeInBits,
    uint32_t AlignInBits,
    uint64_t OffsetInBits,
    llvm::DINode::DIFlags Flags,
    llvm::Metadata* Elements,
    unsigned int RuntimeLang,
    llvm::Metadata* VTableHolder,
    llvm::Metadata* TemplateParams,
    llvm::Metadata* Discriminator,
    llvm::Metadata* DataLocation,
    llvm::Metadata* Associated,
    llvm::Metadata* Allocated,
    llvm::Metadata* Rank,
    llvm::Metadata* Annotations)

Description

Build a DICompositeType with the given ODR identifier. Looks up the mapped DICompositeType for the given ODR \c Identifier. If it doesn't exist, creates a new one. If it does exist and \a isForwardDecl(), and the new arguments would be a definition, mutates the the type in place. In either case, returns the type. If not \a LLVMContext::isODRUniquingDebugTypes(), this function returns nullptr.

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1166

Parameters

llvm::LLVMContext& Context
llvm::MDString& Identifier
unsigned int Tag
llvm::MDString* Name
llvm::Metadata* File
unsigned int Line
llvm::Metadata* Scope
llvm::Metadata* BaseType
uint64_t SizeInBits
uint32_t AlignInBits
uint64_t OffsetInBits
llvm::DINode::DIFlags Flags
llvm::Metadata* Elements
unsigned int RuntimeLang
llvm::Metadata* VTableHolder
llvm::Metadata* TemplateParams
llvm::Metadata* Discriminator
llvm::Metadata* DataLocation
llvm::Metadata* Associated
llvm::Metadata* Allocated
llvm::Metadata* Rank
llvm::Metadata* Annotations

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

Description

@ }

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1257

Parameters

const llvm::Metadata* MD

llvm::TempDICompositeType clone() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1135

llvm::TempDICompositeType cloneImpl() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1094

llvm::DIVariable* getAllocated() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1212

llvm::DIExpression* getAllocatedExp() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1215

llvm::DINodeArray getAnnotations() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1229

llvm::DIVariable* getAssociated() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1205

llvm::DIExpression* getAssociatedExp() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1208

llvm::DIType* getBaseType() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1175

llvm::DIVariable* getDataLocation() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1198

llvm::DIExpression* getDataLocationExp() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1201

llvm::DIDerivedType* getDiscriminator() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1194

llvm::DINodeArray getElements() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1176

llvm::StringRef getIdentifier() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1185

static llvm::DICompositeType* getImpl(
    llvm::LLVMContext& Context,
    unsigned int Tag,
    llvm::MDString* Name,
    llvm::Metadata* File,
    unsigned int Line,
    llvm::Metadata* Scope,
    llvm::Metadata* BaseType,
    uint64_t SizeInBits,
    uint32_t AlignInBits,
    uint64_t OffsetInBits,
    llvm::DINode::DIFlags Flags,
    llvm::Metadata* Elements,
    unsigned int RuntimeLang,
    llvm::Metadata* VTableHolder,
    llvm::Metadata* TemplateParams,
    llvm::MDString* Identifier,
    llvm::Metadata* Discriminator,
    llvm::Metadata* DataLocation,
    llvm::Metadata* Associated,
    llvm::Metadata* Allocated,
    llvm::Metadata* Rank,
    llvm::Metadata* Annotations,
    llvm::Metadata::StorageType Storage,
    bool ShouldCreate = true)

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1085

Parameters

llvm::LLVMContext& Context
unsigned int Tag
llvm::MDString* Name
llvm::Metadata* File
unsigned int Line
llvm::Metadata* Scope
llvm::Metadata* BaseType
uint64_t SizeInBits
uint32_t AlignInBits
uint64_t OffsetInBits
llvm::DINode::DIFlags Flags
llvm::Metadata* Elements
unsigned int RuntimeLang
llvm::Metadata* VTableHolder
llvm::Metadata* TemplateParams
llvm::MDString* Identifier
llvm::Metadata* Discriminator
llvm::Metadata* DataLocation
llvm::Metadata* Associated
llvm::Metadata* Allocated
llvm::Metadata* Rank
llvm::Metadata* Annotations
llvm::Metadata::StorageType Storage
bool ShouldCreate = true

static llvm::DICompositeType* getImpl(
    llvm::LLVMContext& Context,
    unsigned int Tag,
    llvm::StringRef Name,
    llvm::Metadata* File,
    unsigned int Line,
    llvm::DIScope* Scope,
    llvm::DIType* BaseType,
    uint64_t SizeInBits,
    uint32_t AlignInBits,
    uint64_t OffsetInBits,
    llvm::DINode::DIFlags Flags,
    llvm::DINodeArray Elements,
    unsigned int RuntimeLang,
    llvm::DIType* VTableHolder,
    llvm::DITemplateParameterArray TemplateParams,
    llvm::StringRef Identifier,
    llvm::DIDerivedType* Discriminator,
    llvm::Metadata* DataLocation,
    llvm::Metadata* Associated,
    llvm::Metadata* Allocated,
    llvm::Metadata* Rank,
    llvm::DINodeArray Annotations,
    llvm::Metadata::StorageType Storage,
    bool ShouldCreate = true)

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1068

Parameters

llvm::LLVMContext& Context
unsigned int Tag
llvm::StringRef Name
llvm::Metadata* File
unsigned int Line
llvm::DIScope* Scope
llvm::DIType* BaseType
uint64_t SizeInBits
uint32_t AlignInBits
uint64_t OffsetInBits
llvm::DINode::DIFlags Flags
llvm::DINodeArray Elements
unsigned int RuntimeLang
llvm::DIType* VTableHolder
llvm::DITemplateParameterArray TemplateParams
llvm::StringRef Identifier
llvm::DIDerivedType* Discriminator
llvm::Metadata* DataLocation
llvm::Metadata* Associated
llvm::Metadata* Allocated
llvm::Metadata* Rank
llvm::DINodeArray Annotations
llvm::Metadata::StorageType Storage
bool ShouldCreate = true

static llvm::DICompositeType* getODRType(
    llvm::LLVMContext& Context,
    llvm::MDString& Identifier,
    unsigned int Tag,
    llvm::MDString* Name,
    llvm::Metadata* File,
    unsigned int Line,
    llvm::Metadata* Scope,
    llvm::Metadata* BaseType,
    uint64_t SizeInBits,
    uint32_t AlignInBits,
    uint64_t OffsetInBits,
    llvm::DINode::DIFlags Flags,
    llvm::Metadata* Elements,
    unsigned int RuntimeLang,
    llvm::Metadata* VTableHolder,
    llvm::Metadata* TemplateParams,
    llvm::Metadata* Discriminator,
    llvm::Metadata* DataLocation,
    llvm::Metadata* Associated,
    llvm::Metadata* Allocated,
    llvm::Metadata* Rank,
    llvm::Metadata* Annotations)

Description

Get a DICompositeType with the given ODR identifier. If \a LLVMContext::isODRUniquingDebugTypes(), gets the mapped DICompositeType for the given ODR \c Identifier. If none exists, creates a new node. Else, returns \c nullptr.

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1145

Parameters

llvm::LLVMContext& Context
llvm::MDString& Identifier
unsigned int Tag
llvm::MDString* Name
llvm::Metadata* File
unsigned int Line
llvm::Metadata* Scope
llvm::Metadata* BaseType
uint64_t SizeInBits
uint32_t AlignInBits
uint64_t OffsetInBits
llvm::DINode::DIFlags Flags
llvm::Metadata* Elements
unsigned int RuntimeLang
llvm::Metadata* VTableHolder
llvm::Metadata* TemplateParams
llvm::Metadata* Discriminator
llvm::Metadata* DataLocation
llvm::Metadata* Associated
llvm::Metadata* Allocated
llvm::Metadata* Rank
llvm::Metadata* Annotations

static llvm::DICompositeType* getODRTypeIfExists(
    llvm::LLVMContext& Context,
    llvm::MDString& Identifier)

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1153

Parameters

llvm::LLVMContext& Context
llvm::MDString& Identifier

llvm::ConstantInt* getRankConst() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1219

llvm::DIExpression* getRankExp() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1224

llvm::Metadata* getRawAllocated() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1211

llvm::Metadata* getRawAnnotations() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1228

llvm::Metadata* getRawAssociated() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1204

llvm::Metadata* getRawBaseType() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1188

llvm::Metadata* getRawDataLocation() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1197

llvm::Metadata* getRawDiscriminator() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1193

llvm::Metadata* getRawElements() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1189

llvm::MDString* getRawIdentifier() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1192

llvm::Metadata* getRawRank() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1218

llvm::Metadata* getRawTemplateParams() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1191

llvm::Metadata* getRawVTableHolder() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1190

unsigned int getRuntimeLang() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1186

llvm::DITemplateParameterArray getTemplateParams()
    const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1182

llvm::DIType* getVTableHolder() const

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1179

void mutate(unsigned int Tag,
            unsigned int Line,
            unsigned int RuntimeLang,
            uint64_t SizeInBits,
            uint32_t AlignInBits,
            uint64_t OffsetInBits,
            llvm::DINode::DIFlags Flags)

Description

Change fields in place.

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1058

Parameters

unsigned int Tag
unsigned int Line
unsigned int RuntimeLang
uint64_t SizeInBits
uint32_t AlignInBits
uint64_t OffsetInBits
llvm::DINode::DIFlags Flags

void replaceElements(llvm::DINodeArray Elements)

Description

Replace operands. If this \a isUniqued() and not \a isResolved(), on a uniquing collision this will be RAUW'ed and deleted. Use a \a TrackingMDRef to keep track of its movement if necessary. @ {

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1239

Parameters

llvm::DINodeArray Elements

void replaceTemplateParams(
    llvm::DITemplateParameterArray TemplateParams)

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1252

Parameters

llvm::DITemplateParameterArray TemplateParams

void replaceVTableHolder(
    llvm::DIType* VTableHolder)

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1248

Parameters

llvm::DIType* VTableHolder

~DICompositeType()

Declared at: llvm/include/llvm/IR/DebugInfoMetadata.h:1055