class DISubprogram

Declaration

class DISubprogram : public DILocalScope { /* full declaration omitted */ };

Description

Subprogram description.

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

Inherits from: DILocalScope

Member Variables

private unsigned int Line
private unsigned int ScopeLine
private unsigned int VirtualIndex
private int ThisAdjustment
In the MS ABI, the implicit 'this' parameter is adjusted in the prologue of method overrides from secondary bases by this amount. It may be negative.
private llvm::DINode::DIFlags Flags
private llvm::DISubprogram::DISPFlags SPFlags

Inherited from Metadata:

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

Method Overview

  • private DISubprogram(llvm::LLVMContext & C, llvm::Metadata::StorageType Storage, unsigned int Line, unsigned int ScopeLine, unsigned int VirtualIndex, int ThisAdjustment, llvm::DINode::DIFlags Flags, llvm::DISubprogram::DISPFlags SPFlags, ArrayRef<llvm::Metadata *> Ops)
  • public bool areAllCallsDescribed() const
  • public static bool classof(const llvm::Metadata * MD)
  • public llvm::TempDISubprogram clone() const
  • private llvm::TempDISubprogram cloneImpl() const
  • public llvm::TempDISubprogram cloneWithFlags(llvm::DINode::DIFlags NewFlags) const
  • public bool describes(const llvm::Function * F) const
  • public llvm::DINodeArray getAnnotations() const
  • public llvm::DIType * getContainingType() const
  • public llvm::DISubprogram * getDeclaration() const
  • public static llvm::DISubprogram::DISPFlags getFlag(llvm::StringRef Flag)
  • public static llvm::StringRef getFlagString(llvm::DISubprogram::DISPFlags Flag)
  • public llvm::DINode::DIFlags getFlags() const
  • private static llvm::DISubprogram * getImpl(llvm::LLVMContext & Context, llvm::Metadata * Scope, llvm::MDString * Name, llvm::MDString * LinkageName, llvm::Metadata * File, unsigned int Line, llvm::Metadata * Type, unsigned int ScopeLine, llvm::Metadata * ContainingType, unsigned int VirtualIndex, int ThisAdjustment, llvm::DINode::DIFlags Flags, llvm::DISubprogram::DISPFlags SPFlags, llvm::Metadata * Unit, llvm::Metadata * TemplateParams, llvm::Metadata * Declaration, llvm::Metadata * RetainedNodes, llvm::Metadata * ThrownTypes, llvm::Metadata * Annotations, llvm::MDString * TargetFuncName, llvm::Metadata::StorageType Storage, bool ShouldCreate = true)
  • private static llvm::DISubprogram * getImpl(llvm::LLVMContext & Context, llvm::DIScope * Scope, llvm::StringRef Name, llvm::StringRef LinkageName, llvm::DIFile * File, unsigned int Line, llvm::DISubroutineType * Type, unsigned int ScopeLine, llvm::DIType * ContainingType, unsigned int VirtualIndex, int ThisAdjustment, llvm::DINode::DIFlags Flags, llvm::DISubprogram::DISPFlags SPFlags, llvm::DICompileUnit * Unit, llvm::DITemplateParameterArray TemplateParams, llvm::DISubprogram * Declaration, llvm::DINodeArray RetainedNodes, llvm::DITypeArray ThrownTypes, llvm::DINodeArray Annotations, llvm::StringRef TargetFuncName, llvm::Metadata::StorageType Storage, bool ShouldCreate = true)
  • public unsigned int getLine() const
  • public llvm::StringRef getLinkageName() const
  • public llvm::StringRef getName() const
  • public llvm::Metadata * getRawAnnotations() const
  • public llvm::Metadata * getRawContainingType() const
  • public llvm::Metadata * getRawDeclaration() const
  • public llvm::MDString * getRawLinkageName() const
  • public llvm::MDString * getRawName() const
  • public llvm::Metadata * getRawRetainedNodes() const
  • public llvm::Metadata * getRawScope() const
  • public llvm::MDString * getRawTargetFuncName() const
  • public llvm::Metadata * getRawTemplateParams() const
  • public llvm::Metadata * getRawThrownTypes() const
  • public llvm::Metadata * getRawType() const
  • public llvm::Metadata * getRawUnit() const
  • public llvm::DINodeArray getRetainedNodes() const
  • public llvm::DISubprogram::DISPFlags getSPFlags() const
  • public llvm::DIScope * getScope() const
  • public unsigned int getScopeLine() const
  • public llvm::StringRef getTargetFuncName() const
  • public llvm::DITemplateParameterArray getTemplateParams() const
  • public int getThisAdjustment() const
  • public llvm::DITypeArray getThrownTypes() const
  • public llvm::DISubroutineType * getType() const
  • public llvm::DICompileUnit * getUnit() const
  • public unsigned int getVirtualIndex() const
  • public unsigned int getVirtuality() const
  • public bool isArtificial() const
  • public bool isDefinition() const
  • public bool isDeleted() const
  • public bool isElemental() const
  • public bool isExplicit() const
  • public bool isLValueReference() const
  • public bool isLocalToUnit() const
  • public bool isMainSubprogram() const
  • public bool isNoReturn() const
  • public bool isObjCDirect() const
  • public bool isOptimized() const
  • public bool isPrivate() const
  • public bool isProtected() const
  • public bool isPrototyped() const
  • public bool isPublic() const
  • public bool isPure() const
  • public bool isRValueReference() const
  • public bool isRecursive() const
  • public bool isThunk() const
  • public void replaceLinkageName(llvm::MDString * LN)
  • public void replaceRawLinkageName(llvm::MDString * LinkageName)
  • public void replaceType(llvm::DISubroutineType * Ty)
  • public void replaceUnit(llvm::DICompileUnit * CU)
  • public void setScopeLine(unsigned int L)
  • public static llvm::DISubprogram::DISPFlags splitFlags(llvm::DISubprogram::DISPFlags Flags, SmallVectorImpl<llvm::DISubprogram::DISPFlags> & SplitFlags)
  • public static llvm::DISubprogram::DISPFlags toSPFlags(bool IsLocalToUnit, bool IsDefinition, bool IsOptimized, unsigned int Virtuality = SPFlagNonvirtual, bool IsMainSubprogram = false)
  • private ~DISubprogram()

Inherited from DILocalScope:

Inherited from DIScope:

Inherited from DINode:

Inherited from MDNode:

Inherited from Metadata:

Methods

DISubprogram(
    llvm::LLVMContext& C,
    llvm::Metadata::StorageType Storage,
    unsigned int Line,
    unsigned int ScopeLine,
    unsigned int VirtualIndex,
    int ThisAdjustment,
    llvm::DINode::DIFlags Flags,
    llvm::DISubprogram::DISPFlags SPFlags,
    ArrayRef<llvm::Metadata*> Ops)

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

Parameters

llvm::LLVMContext& C
llvm::Metadata::StorageType Storage
unsigned int Line
unsigned int ScopeLine
unsigned int VirtualIndex
int ThisAdjustment
llvm::DINode::DIFlags Flags
llvm::DISubprogram::DISPFlags SPFlags
ArrayRef<llvm::Metadata*> Ops

bool areAllCallsDescribed() const

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

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

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

Parameters

const llvm::Metadata* MD

llvm::TempDISubprogram clone() const

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

llvm::TempDISubprogram cloneImpl() const

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

llvm::TempDISubprogram cloneWithFlags(
    llvm::DINode::DIFlags NewFlags) const

Description

Returns a new temporary DISubprogram with updated Flags

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

Parameters

llvm::DINode::DIFlags NewFlags

bool describes(const llvm::Function* F) const

Description

Check if this subprogram describes the given function. FIXME: Should this be looking through bitcasts?

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

Parameters

const llvm::Function* F

llvm::DINodeArray getAnnotations() const

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

llvm::DIType* getContainingType() const

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

llvm::DISubprogram* getDeclaration() const

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

static llvm::DISubprogram::DISPFlags getFlag(
    llvm::StringRef Flag)

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

Parameters

llvm::StringRef Flag

static llvm::StringRef getFlagString(
    llvm::DISubprogram::DISPFlags Flag)

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

Parameters

llvm::DISubprogram::DISPFlags Flag

llvm::DINode::DIFlags getFlags() const

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

static llvm::DISubprogram* getImpl(
    llvm::LLVMContext& Context,
    llvm::Metadata* Scope,
    llvm::MDString* Name,
    llvm::MDString* LinkageName,
    llvm::Metadata* File,
    unsigned int Line,
    llvm::Metadata* Type,
    unsigned int ScopeLine,
    llvm::Metadata* ContainingType,
    unsigned int VirtualIndex,
    int ThisAdjustment,
    llvm::DINode::DIFlags Flags,
    llvm::DISubprogram::DISPFlags SPFlags,
    llvm::Metadata* Unit,
    llvm::Metadata* TemplateParams,
    llvm::Metadata* Declaration,
    llvm::Metadata* RetainedNodes,
    llvm::Metadata* ThrownTypes,
    llvm::Metadata* Annotations,
    llvm::MDString* TargetFuncName,
    llvm::Metadata::StorageType Storage,
    bool ShouldCreate = true)

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

Parameters

llvm::LLVMContext& Context
llvm::Metadata* Scope
llvm::MDString* Name
llvm::MDString* LinkageName
llvm::Metadata* File
unsigned int Line
llvm::Metadata* Type
unsigned int ScopeLine
llvm::Metadata* ContainingType
unsigned int VirtualIndex
int ThisAdjustment
llvm::DINode::DIFlags Flags
llvm::DISubprogram::DISPFlags SPFlags
llvm::Metadata* Unit
llvm::Metadata* TemplateParams
llvm::Metadata* Declaration
llvm::Metadata* RetainedNodes
llvm::Metadata* ThrownTypes
llvm::Metadata* Annotations
llvm::MDString* TargetFuncName
llvm::Metadata::StorageType Storage
bool ShouldCreate = true

static llvm::DISubprogram* getImpl(
    llvm::LLVMContext& Context,
    llvm::DIScope* Scope,
    llvm::StringRef Name,
    llvm::StringRef LinkageName,
    llvm::DIFile* File,
    unsigned int Line,
    llvm::DISubroutineType* Type,
    unsigned int ScopeLine,
    llvm::DIType* ContainingType,
    unsigned int VirtualIndex,
    int ThisAdjustment,
    llvm::DINode::DIFlags Flags,
    llvm::DISubprogram::DISPFlags SPFlags,
    llvm::DICompileUnit* Unit,
    llvm::DITemplateParameterArray TemplateParams,
    llvm::DISubprogram* Declaration,
    llvm::DINodeArray RetainedNodes,
    llvm::DITypeArray ThrownTypes,
    llvm::DINodeArray Annotations,
    llvm::StringRef TargetFuncName,
    llvm::Metadata::StorageType Storage,
    bool ShouldCreate = true)

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

Parameters

llvm::LLVMContext& Context
llvm::DIScope* Scope
llvm::StringRef Name
llvm::StringRef LinkageName
llvm::DIFile* File
unsigned int Line
llvm::DISubroutineType* Type
unsigned int ScopeLine
llvm::DIType* ContainingType
unsigned int VirtualIndex
int ThisAdjustment
llvm::DINode::DIFlags Flags
llvm::DISubprogram::DISPFlags SPFlags
llvm::DICompileUnit* Unit
llvm::DITemplateParameterArray TemplateParams
llvm::DISubprogram* Declaration
llvm::DINodeArray RetainedNodes
llvm::DITypeArray ThrownTypes
llvm::DINodeArray Annotations
llvm::StringRef TargetFuncName
llvm::Metadata::StorageType Storage
bool ShouldCreate = true

unsigned int getLine() const

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

llvm::StringRef getLinkageName() const

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

llvm::StringRef getName() const

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

llvm::Metadata* getRawAnnotations() const

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

llvm::Metadata* getRawContainingType() const

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

llvm::Metadata* getRawDeclaration() const

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

llvm::MDString* getRawLinkageName() const

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

llvm::MDString* getRawName() const

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

llvm::Metadata* getRawRetainedNodes() const

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

llvm::Metadata* getRawScope() const

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

llvm::MDString* getRawTargetFuncName() const

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

llvm::Metadata* getRawTemplateParams() const

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

llvm::Metadata* getRawThrownTypes() const

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

llvm::Metadata* getRawType() const

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

llvm::Metadata* getRawUnit() const

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

llvm::DINodeArray getRetainedNodes() const

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

llvm::DISubprogram::DISPFlags getSPFlags() const

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

llvm::DIScope* getScope() const

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

unsigned int getScopeLine() const

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

llvm::StringRef getTargetFuncName() const

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

llvm::DITemplateParameterArray getTemplateParams()
    const

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

int getThisAdjustment() const

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

llvm::DITypeArray getThrownTypes() const

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

llvm::DISubroutineType* getType() const

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

llvm::DICompileUnit* getUnit() const

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

unsigned int getVirtualIndex() const

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

unsigned int getVirtuality() const

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

bool isArtificial() const

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

bool isDefinition() const

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

bool isDeleted() const

Description

Check if this is deleted member function. Return true if this subprogram is a C++11 special member function declared deleted.

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

bool isElemental() const

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

bool isExplicit() const

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

bool isLValueReference() const

Description

Check if this is reference-qualified. Return true if this subprogram is a C++11 reference-qualified non-static member function (void foo() & ).

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

bool isLocalToUnit() const

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

bool isMainSubprogram() const

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

bool isNoReturn() const

Description

Check if this is marked as noreturn. Return true if this subprogram is C++11 noreturn or C11 _Noreturn

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

bool isObjCDirect() const

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

bool isOptimized() const

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

bool isPrivate() const

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

bool isProtected() const

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

bool isPrototyped() const

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

bool isPublic() const

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

bool isPure() const

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

bool isRValueReference() const

Description

Check if this is rvalue-reference-qualified. Return true if this subprogram is a C++11 rvalue-reference-qualified non-static member function (void foo() & & ).

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

bool isRecursive() const

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

bool isThunk() const

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

void replaceLinkageName(llvm::MDString* LN)

Description

Only used by clients of CloneFunction, and only right after the cloning.

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

Parameters

llvm::MDString* LN

void replaceRawLinkageName(
    llvm::MDString* LinkageName)

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

Parameters

llvm::MDString* LinkageName

void replaceType(llvm::DISubroutineType* Ty)

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

Parameters

llvm::DISubroutineType* Ty

void replaceUnit(llvm::DICompileUnit* CU)

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

Parameters

llvm::DICompileUnit* CU

void setScopeLine(unsigned int L)

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

Parameters

unsigned int L

static llvm::DISubprogram::DISPFlags splitFlags(
    llvm::DISubprogram::DISPFlags Flags,
    SmallVectorImpl<
        llvm::DISubprogram::DISPFlags>&
        SplitFlags)

Description

Split up a flags bitfield for easier printing. Split \c Flags into \c SplitFlags, a vector of its components. Returns any remaining (unrecognized) bits.

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

Parameters

llvm::DISubprogram::DISPFlags Flags
SmallVectorImpl<llvm::DISubprogram::DISPFlags>& SplitFlags

static llvm::DISubprogram::DISPFlags toSPFlags(
    bool IsLocalToUnit,
    bool IsDefinition,
    bool IsOptimized,
    unsigned int Virtuality = SPFlagNonvirtual,
    bool IsMainSubprogram = false)

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

Parameters

bool IsLocalToUnit
bool IsDefinition
bool IsOptimized
unsigned int Virtuality = SPFlagNonvirtual
bool IsMainSubprogram = false

~DISubprogram()

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