LLVM
8.0.1
|
Subprogram description. More...
#include "llvm/IR/DebugInfoMetadata.h"
Public Types | |
enum | DISPFlags : uint32_t { SPFlagNonvirtual = SPFlagZero, SPFlagVirtuality = SPFlagVirtual | SPFlagPureVirtual } |
Debug info subprogram flags. More... | |
![]() | |
enum | DIFlags : uint32_t { FlagAccessibility = FlagPrivate | FlagProtected | FlagPublic, FlagPtrToMemberRep } |
Debug info flags. More... | |
![]() | |
using | op_iterator = const MDOperand * |
using | op_range = iterator_range< op_iterator > |
![]() | |
enum | MetadataKind |
Static Public Member Functions | |
static DISPFlags | getFlag (StringRef Flag) |
static StringRef | getFlagString (DISPFlags Flag) |
static DISPFlags | splitFlags (DISPFlags Flags, SmallVectorImpl< DISPFlags > &SplitFlags) |
Split up a flags bitfield for easier printing. More... | |
static DISPFlags | toSPFlags (bool IsLocalToUnit, bool IsDefinition, bool IsOptimized, unsigned Virtuality=SPFlagNonvirtual) |
static bool | classof (const Metadata *MD) |
![]() | |
static bool | classof (const Metadata *MD) |
![]() | |
static bool | classof (const Metadata *MD) |
![]() | |
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 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. More... | |
template<class T > | |
static std::enable_if< std::is_base_of< MDNode, T >::value, T * >::type | replaceWithPermanent (std::unique_ptr< T, TempMDNodeDeleter > N) |
Replace a temporary node with a permanent one. More... | |
template<class T > | |
static std::enable_if< std::is_base_of< MDNode, T >::value, T * >::type | replaceWithUniqued (std::unique_ptr< T, TempMDNodeDeleter > N) |
Replace a temporary node with a uniqued one. More... | |
template<class T > | |
static std::enable_if< std::is_base_of< MDNode, T >::value, T * >::type | 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 MDNode * | concatenate (MDNode *A, MDNode *B) |
Methods for metadata merging. More... | |
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) |
Friends | |
class | LLVMContextImpl |
class | MDNode |
Additional Inherited Members | |
![]() | |
using | mutable_op_range = iterator_range< MDOperand * > |
![]() | |
enum | StorageType { Uniqued, Distinct, Temporary } |
Active type of storage. More... | |
![]() | |
DILocalScope (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, ArrayRef< Metadata *> Ops) | |
~DILocalScope ()=default | |
![]() | |
DIScope (LLVMContext &C, unsigned ID, StorageType Storage, unsigned Tag, ArrayRef< Metadata *> Ops) | |
~DIScope ()=default | |
![]() | |
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... | |
![]() | |
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 () |
MDOperand * | mutable_begin () |
MDOperand * | mutable_end () |
mutable_op_range | mutable_operands () |
void | setOperand (unsigned I, Metadata *New) |
Set an operand. More... | |
void | storeDistinctInContext () |
![]() | |
Metadata (unsigned ID, StorageType Storage) | |
~Metadata ()=default | |
void | handleChangedOperand (void *, Metadata *) |
Default handling of a changed operand, which asserts. More... | |
![]() | |
static MDString * | getCanonicalMDString (LLVMContext &Context, StringRef S) |
![]() | |
template<class T , class StoreT > | |
static T * | storeImpl (T *N, StorageType Storage, StoreT &Store) |
template<class T > | |
static T * | storeImpl (T *N, StorageType Storage) |
![]() | |
unsigned char | Storage: 7 |
Storage flag for non-uniqued, otherwise unowned, metadata. More... | |
unsigned char | ImplicitCode: 1 |
unsigned short | SubclassData16 = 0 |
unsigned | SubclassData32 = 0 |
Subprogram description.
TODO: Remove DisplayName. It's always equal to Name. TODO: Split up flags.
Definition at line 1644 of file DebugInfoMetadata.h.
Debug info subprogram flags.
Enumerator | |
---|---|
SPFlagNonvirtual | |
SPFlagVirtuality |
Definition at line 1659 of file DebugInfoMetadata.h.
Definition at line 1881 of file DebugInfoMetadata.h.
References llvm::Metadata::getMetadataID().
llvm::DISubprogram::DEFINE_MDNODE_GET | ( | DISubprogram | , |
(DIScopeRef Scope, StringRef Name, StringRef LinkageName, DIFile *File, unsigned Line, DISubroutineType *Type, unsigned ScopeLine, DITypeRef ContainingType, unsigned VirtualIndex, int ThisAdjustment, DIFlags Flags, DISPFlags SPFlags, DICompileUnit *Unit, DITemplateParameterArray TemplateParams=nullptr, DISubprogram *Declaration=nullptr, DINodeArray RetainedNodes=nullptr, DITypeArray ThrownTypes=nullptr) | , | ||
(Scope, Name, LinkageName, File, Line, Type, ScopeLine, ContainingType, VirtualIndex, ThisAdjustment, Flags, SPFlags, Unit, TemplateParams, Declaration, RetainedNodes, ThrownTypes) | |||
) |
|
static |
Definition at line 588 of file DebugInfoMetadata.cpp.
References HANDLE_DISP_FLAG.
Referenced by FunctionNumber().
Definition at line 595 of file DebugInfoMetadata.cpp.
|
static |
Split up a flags bitfield for easier printing.
Split Flags
into SplitFlags
, a vector of its components. Returns any remaining (unrecognized) bits.
Definition at line 609 of file DebugInfoMetadata.cpp.
References adjustColumn(), Arg, assert(), DEFINE_GETIMPL_LOOKUP, DEFINE_GETIMPL_STORE, DEFINE_GETIMPL_STORE_N, DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS, llvm::StringRef::empty(), F(), llvm::ARMBuildAttrs::File, getLinkageName(), getName(), llvm::Value::getName(), llvm::Function::getSubprogram(), isCanonical(), llvm::LinkageName, Name, llvm::SmallVectorTemplateBase< T >::pop_back(), llvm::DILocation::Scope, llvm::SmallVectorBase::size(), and Unit.
|
inlinestatic |
Definition at line 1679 of file DebugInfoMetadata.h.
References DEFINE_MDNODE_GET, llvm::dwarf::DW_VIRTUALITY_max, llvm::MDNode::get(), llvm::MDTuple::get(), llvm::DICompileUnit::get(), llvm::Intrinsic::getDeclaration(), getImpl(), getLinkageName(), getName(), getType(), llvm::LinkageName, and Unit.
Referenced by FunctionNumber(), and pack_into_DISPFlags().
|
friend |
Definition at line 1645 of file DebugInfoMetadata.h.
|
friend |
Definition at line 1646 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata* llvm::DISubprogram::ContainingType |
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int DIFlags DISPFlags Metadata Metadata Metadata* llvm::DISubprogram::Declaration = nullptr |
Definition at line 1764 of file DebugInfoMetadata.h.
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int DIFlags llvm::DISubprogram::Flags |
Definition at line 1760 of file DebugInfoMetadata.h.
Definition at line 1760 of file DebugInfoMetadata.h.
Definition at line 1760 of file DebugInfoMetadata.h.
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int DIFlags DISPFlags Metadata Metadata Metadata Metadata* llvm::DISubprogram::RetainedNodes = nullptr |
Definition at line 1765 of file DebugInfoMetadata.h.
Metadata* llvm::DISubprogram::Scope |
Definition at line 1760 of file DebugInfoMetadata.h.
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int DIFlags DISPFlags llvm::DISubprogram::SPFlags |
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int DIFlags DISPFlags Metadata Metadata* llvm::DISubprogram::TemplateParams = nullptr |
Definition at line 1764 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int llvm::DISubprogram::ThisAdjustment |
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int DIFlags DISPFlags Metadata Metadata Metadata Metadata Metadata* llvm::DISubprogram::ThrownTypes |
Definition at line 1765 of file DebugInfoMetadata.h.
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned int DIFlags DISPFlags Metadata* llvm::DISubprogram::Unit |
Definition at line 1760 of file DebugInfoMetadata.h.
Metadata MDString MDString Metadata unsigned Metadata unsigned Metadata unsigned llvm::DISubprogram::VirtualIndex |
Definition at line 1760 of file DebugInfoMetadata.h.