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:890

Inherits from: DIType

Member Variables

Inherited from Metadata:

protected Storage
protected ImplicitCode
protected SubclassData16 = 0
protected SubclassData32 = 0

Method Overview

  • 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)
  • public static bool classof(const llvm::Metadata * MD)
  • public llvm::TempDICompositeType clone() const
  • public llvm::DIType * getBaseType() const
  • public llvm::DIDerivedType * getDiscriminator() const
  • public llvm::DINodeArray getElements() const
  • public llvm::StringRef getIdentifier() const
  • 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)
  • public static llvm::DICompositeType * getODRTypeIfExists(llvm::LLVMContext & Context, llvm::MDString & Identifier)
  • public llvm::Metadata * getRawBaseType() const
  • public llvm::Metadata * getRawDiscriminator() const
  • public llvm::Metadata * getRawElements() const
  • public llvm::MDString * getRawIdentifier() 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
  • public void replaceElements(llvm::DINodeArray Elements)
  • public void replaceTemplateParams(llvm::DITemplateParameterArray TemplateParams)
  • public void replaceVTableHolder(llvm::DIType * VTableHolder)

Inherited from DIType:

Inherited from DIScope:

Inherited from DINode:

Inherited from MDNode:

Inherited from Metadata:

Methods

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)

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:1001

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

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

Description

@ }

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

Parameters

const llvm::Metadata* MD

llvm::TempDICompositeType clone() const

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

llvm::DIType* getBaseType() const

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

llvm::DIDerivedType* getDiscriminator() const

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

llvm::DINodeArray getElements() const

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

llvm::StringRef getIdentifier() const

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

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)

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:982

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

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

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

Parameters

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

llvm::Metadata* getRawBaseType() const

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

llvm::Metadata* getRawDiscriminator() const

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

llvm::Metadata* getRawElements() const

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

llvm::MDString* getRawIdentifier() const

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

llvm::Metadata* getRawTemplateParams() const

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

llvm::Metadata* getRawVTableHolder() const

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

unsigned int getRuntimeLang() const

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

llvm::DITemplateParameterArray getTemplateParams()
    const

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

llvm::DIType* getVTableHolder() const

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

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:1035

Parameters

llvm::DINodeArray Elements

void replaceTemplateParams(
    llvm::DITemplateParameterArray TemplateParams)

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

Parameters

llvm::DITemplateParameterArray TemplateParams

void replaceVTableHolder(
    llvm::DIType* VTableHolder)

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

Parameters

llvm::DIType* VTableHolder