| //===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| /// This file declares the C API endpoints for generating DWARF Debug Info | |
| /// | |
| /// Note: This interface is experimental. It is *NOT* stable, and may be | |
| /// changed without warning. | |
| /// | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLVM_C_DEBUGINFO_H | |
| #define LLVM_C_DEBUGINFO_H | |
| #include "llvm-c/Core.h" | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| /** | |
| * Debug info flags. | |
| */ | |
| typedef enum { | |
| LLVMDIFlagZero = 0, | |
| LLVMDIFlagPrivate = 1, | |
| LLVMDIFlagProtected = 2, | |
| LLVMDIFlagPublic = 3, | |
| LLVMDIFlagFwdDecl = 1 << 2, | |
| LLVMDIFlagAppleBlock = 1 << 3, | |
| LLVMDIFlagBlockByrefStruct = 1 << 4, | |
| LLVMDIFlagVirtual = 1 << 5, | |
| LLVMDIFlagArtificial = 1 << 6, | |
| LLVMDIFlagExplicit = 1 << 7, | |
| LLVMDIFlagPrototyped = 1 << 8, | |
| LLVMDIFlagObjcClassComplete = 1 << 9, | |
| LLVMDIFlagObjectPointer = 1 << 10, | |
| LLVMDIFlagVector = 1 << 11, | |
| LLVMDIFlagStaticMember = 1 << 12, | |
| LLVMDIFlagLValueReference = 1 << 13, | |
| LLVMDIFlagRValueReference = 1 << 14, | |
| LLVMDIFlagReserved = 1 << 15, | |
| LLVMDIFlagSingleInheritance = 1 << 16, | |
| LLVMDIFlagMultipleInheritance = 2 << 16, | |
| LLVMDIFlagVirtualInheritance = 3 << 16, | |
| LLVMDIFlagIntroducedVirtual = 1 << 18, | |
| LLVMDIFlagBitField = 1 << 19, | |
| LLVMDIFlagNoReturn = 1 << 20, | |
| LLVMDIFlagMainSubprogram = 1 << 21, | |
| LLVMDIFlagTypePassByValue = 1 << 22, | |
| LLVMDIFlagTypePassByReference = 1 << 23, | |
| LLVMDIFlagFixedEnum = 1 << 24, | |
| LLVMDIFlagThunk = 1 << 25, | |
| LLVMDIFlagTrivial = 1 << 26, | |
| LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5), | |
| LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected | | |
| LLVMDIFlagPublic, | |
| LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance | | |
| LLVMDIFlagMultipleInheritance | | |
| LLVMDIFlagVirtualInheritance | |
| } LLVMDIFlags; | |
| /** | |
| * Source languages known by DWARF. | |
| */ | |
| typedef enum { | |
| LLVMDWARFSourceLanguageC89, | |
| LLVMDWARFSourceLanguageC, | |
| LLVMDWARFSourceLanguageAda83, | |
| LLVMDWARFSourceLanguageC_plus_plus, | |
| LLVMDWARFSourceLanguageCobol74, | |
| LLVMDWARFSourceLanguageCobol85, | |
| LLVMDWARFSourceLanguageFortran77, | |
| LLVMDWARFSourceLanguageFortran90, | |
| LLVMDWARFSourceLanguagePascal83, | |
| LLVMDWARFSourceLanguageModula2, | |
| // New in DWARF v3: | |
| LLVMDWARFSourceLanguageJava, | |
| LLVMDWARFSourceLanguageC99, | |
| LLVMDWARFSourceLanguageAda95, | |
| LLVMDWARFSourceLanguageFortran95, | |
| LLVMDWARFSourceLanguagePLI, | |
| LLVMDWARFSourceLanguageObjC, | |
| LLVMDWARFSourceLanguageObjC_plus_plus, | |
| LLVMDWARFSourceLanguageUPC, | |
| LLVMDWARFSourceLanguageD, | |
| // New in DWARF v4: | |
| LLVMDWARFSourceLanguagePython, | |
| // New in DWARF v5: | |
| LLVMDWARFSourceLanguageOpenCL, | |
| LLVMDWARFSourceLanguageGo, | |
| LLVMDWARFSourceLanguageModula3, | |
| LLVMDWARFSourceLanguageHaskell, | |
| LLVMDWARFSourceLanguageC_plus_plus_03, | |
| LLVMDWARFSourceLanguageC_plus_plus_11, | |
| LLVMDWARFSourceLanguageOCaml, | |
| LLVMDWARFSourceLanguageRust, | |
| LLVMDWARFSourceLanguageC11, | |
| LLVMDWARFSourceLanguageSwift, | |
| LLVMDWARFSourceLanguageJulia, | |
| LLVMDWARFSourceLanguageDylan, | |
| LLVMDWARFSourceLanguageC_plus_plus_14, | |
| LLVMDWARFSourceLanguageFortran03, | |
| LLVMDWARFSourceLanguageFortran08, | |
| LLVMDWARFSourceLanguageRenderScript, | |
| LLVMDWARFSourceLanguageBLISS, | |
| // Vendor extensions: | |
| LLVMDWARFSourceLanguageMips_Assembler, | |
| LLVMDWARFSourceLanguageGOOGLE_RenderScript, | |
| LLVMDWARFSourceLanguageBORLAND_Delphi | |
| } LLVMDWARFSourceLanguage; | |
| /** | |
| * The amount of debug information to emit. | |
| */ | |
| typedef enum { | |
| LLVMDWARFEmissionNone = 0, | |
| LLVMDWARFEmissionFull, | |
| LLVMDWARFEmissionLineTablesOnly | |
| } LLVMDWARFEmissionKind; | |
| /** | |
| * An LLVM DWARF type encoding. | |
| */ | |
| typedef unsigned LLVMDWARFTypeEncoding; | |
| /** | |
| * The current debug metadata version number. | |
| */ | |
| unsigned LLVMDebugMetadataVersion(void); | |
| /** | |
| * The version of debug metadata that's present in the provided \c Module. | |
| */ | |
| unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module); | |
| /** | |
| * Strip debug info in the module if it exists. | |
| * To do this, we remove all calls to the debugger intrinsics and any named | |
| * metadata for debugging. We also remove debug locations for instructions. | |
| * Return true if module is modified. | |
| */ | |
| LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module); | |
| /** | |
| * Construct a builder for a module, and do not allow for unresolved nodes | |
| * attached to the module. | |
| */ | |
| LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M); | |
| /** | |
| * Construct a builder for a module and collect unresolved nodes attached | |
| * to the module in order to resolve cycles during a call to | |
| * \c LLVMDIBuilderFinalize. | |
| */ | |
| LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M); | |
| /** | |
| * Deallocates the \c DIBuilder and everything it owns. | |
| * @note You must call \c LLVMDIBuilderFinalize before this | |
| */ | |
| void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder); | |
| /** | |
| * Construct any deferred debug info descriptors. | |
| */ | |
| void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder); | |
| /** | |
| * A CompileUnit provides an anchor for all debugging | |
| * information generated during this instance of compilation. | |
| * \param Lang Source programming language, eg. | |
| * \c LLVMDWARFSourceLanguageC99 | |
| * \param FileRef File info. | |
| * \param Producer Identify the producer of debugging information | |
| * and code. Usually this is a compiler | |
| * version string. | |
| * \param ProducerLen The length of the C string passed to \c Producer. | |
| * \param isOptimized A boolean flag which indicates whether optimization | |
| * is enabled or not. | |
| * \param Flags This string lists command line options. This | |
| * string is directly embedded in debug info | |
| * output which may be used by a tool | |
| * analyzing generated debugging information. | |
| * \param FlagsLen The length of the C string passed to \c Flags. | |
| * \param RuntimeVer This indicates runtime version for languages like | |
| * Objective-C. | |
| * \param SplitName The name of the file that we'll split debug info | |
| * out into. | |
| * \param SplitNameLen The length of the C string passed to \c SplitName. | |
| * \param Kind The kind of debug information to generate. | |
| * \param DWOId The DWOId if this is a split skeleton compile unit. | |
| * \param SplitDebugInlining Whether to emit inline debug info. | |
| * \param DebugInfoForProfiling Whether to emit extra debug info for | |
| * profile collection. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateCompileUnit( | |
| LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang, | |
| LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen, | |
| LLVMBool isOptimized, const char *Flags, size_t FlagsLen, | |
| unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen, | |
| LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining, | |
| LLVMBool DebugInfoForProfiling); | |
| /** | |
| * Create a file descriptor to hold debugging information for a file. | |
| * \param Builder The \c DIBuilder. | |
| * \param Filename File name. | |
| * \param FilenameLen The length of the C string passed to \c Filename. | |
| * \param Directory Directory. | |
| * \param DirectoryLen The length of the C string passed to \c Directory. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename, | |
| size_t FilenameLen, const char *Directory, | |
| size_t DirectoryLen); | |
| /** | |
| * Creates a new descriptor for a module with the specified parent scope. | |
| * \param Builder The \c DIBuilder. | |
| * \param ParentScope The parent scope containing this module declaration. | |
| * \param Name Module name. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| * \param ConfigMacros A space-separated shell-quoted list of -D macro | |
| definitions as they would appear on a command line. | |
| * \param ConfigMacrosLen The length of the C string passed to \c ConfigMacros. | |
| * \param IncludePath The path to the module map file. | |
| * \param IncludePathLen The length of the C string passed to \c IncludePath. | |
| * \param ISysRoot The Clang system root (value of -isysroot). | |
| * \param ISysRootLen The length of the C string passed to \c ISysRoot. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateModule(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentScope, | |
| const char *Name, size_t NameLen, | |
| const char *ConfigMacros, size_t ConfigMacrosLen, | |
| const char *IncludePath, size_t IncludePathLen, | |
| const char *ISysRoot, size_t ISysRootLen); | |
| /** | |
| * Creates a new descriptor for a namespace with the specified parent scope. | |
| * \param Builder The \c DIBuilder. | |
| * \param ParentScope The parent scope containing this module declaration. | |
| * \param Name NameSpace name. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| * \param ExportSymbols Whether or not the namespace exports symbols, e.g. | |
| * this is true of C++ inline namespaces. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateNameSpace(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef ParentScope, | |
| const char *Name, size_t NameLen, | |
| LLVMBool ExportSymbols); | |
| /** | |
| * Create a new descriptor for the specified subprogram. | |
| * \param Builder The \c DIBuilder. | |
| * \param Scope Function scope. | |
| * \param Name Function name. | |
| * \param NameLen Length of enumeration name. | |
| * \param LinkageName Mangled function name. | |
| * \param LinkageNameLen Length of linkage name. | |
| * \param File File where this variable is defined. | |
| * \param LineNo Line number. | |
| * \param Ty Function type. | |
| * \param IsLocalToUnit True if this function is not externally visible. | |
| * \param IsDefinition True if this is a function definition. | |
| * \param ScopeLine Set to the beginning of the scope this starts | |
| * \param Flags E.g.: \c LLVMDIFlagLValueReference. These flags are | |
| * used to emit dwarf attributes. | |
| * \param IsOptimized True if optimization is ON. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateFunction( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, const char *LinkageName, size_t LinkageNameLen, | |
| LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, | |
| LLVMBool IsLocalToUnit, LLVMBool IsDefinition, | |
| unsigned ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized); | |
| /** | |
| * Create a descriptor for a lexical block with the specified parent context. | |
| * \param Builder The \c DIBuilder. | |
| * \param Scope Parent lexical block. | |
| * \param File Source file. | |
| * \param Line The line in the source file. | |
| * \param Column The column in the source file. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, | |
| LLVMMetadataRef File, unsigned Line, unsigned Column); | |
| /** | |
| * Create a descriptor for a lexical block with a new file attached. | |
| * \param Builder The \c DIBuilder. | |
| * \param Scope Lexical block. | |
| * \param File Source file. | |
| * \param Discriminator DWARF path discriminator value. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| LLVMMetadataRef File, | |
| unsigned Discriminator); | |
| /** | |
| * Create a descriptor for an imported namespace. Suitable for e.g. C++ | |
| * using declarations. | |
| * \param Builder The \c DIBuilder. | |
| * \param Scope The scope this module is imported into | |
| * \param File File where the declaration is located. | |
| * \param Line Line number of the declaration. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateImportedModuleFromNamespace(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| LLVMMetadataRef NS, | |
| LLVMMetadataRef File, | |
| unsigned Line); | |
| /** | |
| * Create a descriptor for an imported module that aliases another | |
| * imported entity descriptor. | |
| * \param Builder The \c DIBuilder. | |
| * \param Scope The scope this module is imported into | |
| * \param ImportedEntity Previous imported entity to alias. | |
| * \param File File where the declaration is located. | |
| * \param Line Line number of the declaration. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateImportedModuleFromAlias(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| LLVMMetadataRef ImportedEntity, | |
| LLVMMetadataRef File, | |
| unsigned Line); | |
| /** | |
| * Create a descriptor for an imported module. | |
| * \param Builder The \c DIBuilder. | |
| * \param Scope The scope this module is imported into | |
| * \param M The module being imported here | |
| * \param File File where the declaration is located. | |
| * \param Line Line number of the declaration. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateImportedModuleFromModule(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| LLVMMetadataRef M, | |
| LLVMMetadataRef File, | |
| unsigned Line); | |
| /** | |
| * Create a descriptor for an imported function, type, or variable. Suitable | |
| * for e.g. FORTRAN-style USE declarations. | |
| * \param Builder The DIBuilder. | |
| * \param Scope The scope this module is imported into. | |
| * \param Decl The declaration (or definition) of a function, type, | |
| or variable. | |
| * \param File File where the declaration is located. | |
| * \param Line Line number of the declaration. | |
| * \param Name A name that uniquely identifies this imported declaration. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateImportedDeclaration(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| LLVMMetadataRef Decl, | |
| LLVMMetadataRef File, | |
| unsigned Line, | |
| const char *Name, size_t NameLen); | |
| /** | |
| * Creates a new DebugLocation that describes a source location. | |
| * \param Line The line in the source file. | |
| * \param Column The column in the source file. | |
| * \param Scope The scope in which the location resides. | |
| * \param InlinedAt The scope where this location was inlined, if at all. | |
| * (optional). | |
| * \note If the item to which this location is attached cannot be | |
| * attributed to a source line, pass 0 for the line and column. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line, | |
| unsigned Column, LLVMMetadataRef Scope, | |
| LLVMMetadataRef InlinedAt); | |
| /** | |
| * Get the line number of this debug location. | |
| * \param Location The debug location. | |
| * | |
| * @see DILocation::getLine() | |
| */ | |
| unsigned LLVMDILocationGetLine(LLVMMetadataRef Location); | |
| /** | |
| * Get the column number of this debug location. | |
| * \param Location The debug location. | |
| * | |
| * @see DILocation::getColumn() | |
| */ | |
| unsigned LLVMDILocationGetColumn(LLVMMetadataRef Location); | |
| /** | |
| * Get the local scope associated with this debug location. | |
| * \param Location The debug location. | |
| * | |
| * @see DILocation::getScope() | |
| */ | |
| LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location); | |
| /** | |
| * Create a type array. | |
| * \param Builder The DIBuilder. | |
| * \param Data The type elements. | |
| * \param NumElements Number of type elements. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef *Data, | |
| size_t NumElements); | |
| /** | |
| * Create subroutine type. | |
| * \param Builder The DIBuilder. | |
| * \param File The file in which the subroutine resides. | |
| * \param ParameterTypes An array of subroutine parameter types. This | |
| * includes return type at 0th index. | |
| * \param NumParameterTypes The number of parameter types in \c ParameterTypes | |
| * \param Flags E.g.: \c LLVMDIFlagLValueReference. | |
| * These flags are used to emit dwarf attributes. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef File, | |
| LLVMMetadataRef *ParameterTypes, | |
| unsigned NumParameterTypes, | |
| LLVMDIFlags Flags); | |
| /** | |
| * Create debugging information entry for an enumeration. | |
| * \param Builder The DIBuilder. | |
| * \param Scope Scope in which this enumeration is defined. | |
| * \param Name Enumeration name. | |
| * \param NameLen Length of enumeration name. | |
| * \param File File where this member is defined. | |
| * \param LineNumber Line number. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param Elements Enumeration elements. | |
| * \param NumElements Number of enumeration elements. | |
| * \param ClassTy Underlying type of a C++11/ObjC fixed enum. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateEnumerationType( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, | |
| uint64_t SizeInBits, uint32_t AlignInBits, LLVMMetadataRef *Elements, | |
| unsigned NumElements, LLVMMetadataRef ClassTy); | |
| /** | |
| * Create debugging information entry for a union. | |
| * \param Builder The DIBuilder. | |
| * \param Scope Scope in which this union is defined. | |
| * \param Name Union name. | |
| * \param NameLen Length of union name. | |
| * \param File File where this member is defined. | |
| * \param LineNumber Line number. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param Flags Flags to encode member attribute, e.g. private | |
| * \param Elements Union elements. | |
| * \param NumElements Number of union elements. | |
| * \param RunTimeLang Optional parameter, Objective-C runtime version. | |
| * \param UniqueId A unique identifier for the union. | |
| * \param UniqueIdLen Length of unique identifier. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateUnionType( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, | |
| uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags, | |
| LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang, | |
| const char *UniqueId, size_t UniqueIdLen); | |
| /** | |
| * Create debugging information entry for an array. | |
| * \param Builder The DIBuilder. | |
| * \param Size Array size. | |
| * \param AlignInBits Alignment. | |
| * \param Ty Element type. | |
| * \param Subscripts Subscripts. | |
| * \param NumSubscripts Number of subscripts. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Builder, uint64_t Size, | |
| uint32_t AlignInBits, LLVMMetadataRef Ty, | |
| LLVMMetadataRef *Subscripts, | |
| unsigned NumSubscripts); | |
| /** | |
| * Create debugging information entry for a vector type. | |
| * \param Builder The DIBuilder. | |
| * \param Size Vector size. | |
| * \param AlignInBits Alignment. | |
| * \param Ty Element type. | |
| * \param Subscripts Subscripts. | |
| * \param NumSubscripts Number of subscripts. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateVectorType(LLVMDIBuilderRef Builder, uint64_t Size, | |
| uint32_t AlignInBits, LLVMMetadataRef Ty, | |
| LLVMMetadataRef *Subscripts, | |
| unsigned NumSubscripts); | |
| /** | |
| * Create a DWARF unspecified type. | |
| * \param Builder The DIBuilder. | |
| * \param Name The unspecified type's name. | |
| * \param NameLen Length of type name. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name, | |
| size_t NameLen); | |
| /** | |
| * Create debugging information entry for a basic | |
| * type. | |
| * \param Builder The DIBuilder. | |
| * \param Name Type name. | |
| * \param NameLen Length of type name. | |
| * \param SizeInBits Size of the type. | |
| * \param Encoding DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const char *Name, | |
| size_t NameLen, uint64_t SizeInBits, | |
| LLVMDWARFTypeEncoding Encoding); | |
| /** | |
| * Create debugging information entry for a pointer. | |
| * \param Builder The DIBuilder. | |
| * \param PointeeTy Type pointed by this pointer. | |
| * \param SizeInBits Size. | |
| * \param AlignInBits Alignment. (optional, pass 0 to ignore) | |
| * \param AddressSpace DWARF address space. (optional, pass 0 to ignore) | |
| * \param Name Pointer type name. (optional) | |
| * \param NameLen Length of pointer type name. (optional) | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreatePointerType( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy, | |
| uint64_t SizeInBits, uint32_t AlignInBits, unsigned AddressSpace, | |
| const char *Name, size_t NameLen); | |
| /** | |
| * Create debugging information entry for a struct. | |
| * \param Builder The DIBuilder. | |
| * \param Scope Scope in which this struct is defined. | |
| * \param Name Struct name. | |
| * \param NameLen Struct name length. | |
| * \param File File where this member is defined. | |
| * \param LineNumber Line number. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param Flags Flags to encode member attribute, e.g. private | |
| * \param Elements Struct elements. | |
| * \param NumElements Number of struct elements. | |
| * \param RunTimeLang Optional parameter, Objective-C runtime version. | |
| * \param VTableHolder The object containing the vtable for the struct. | |
| * \param UniqueId A unique identifier for the struct. | |
| * \param UniqueIdLen Length of the unique identifier for the struct. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateStructType( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, | |
| uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags, | |
| LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements, | |
| unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder, | |
| const char *UniqueId, size_t UniqueIdLen); | |
| /** | |
| * Create debugging information entry for a member. | |
| * \param Builder The DIBuilder. | |
| * \param Scope Member scope. | |
| * \param Name Member name. | |
| * \param NameLen Length of member name. | |
| * \param File File where this member is defined. | |
| * \param LineNo Line number. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param OffsetInBits Member offset. | |
| * \param Flags Flags to encode member attribute, e.g. private | |
| * \param Ty Parent type. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateMemberType( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNo, | |
| uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, | |
| LLVMDIFlags Flags, LLVMMetadataRef Ty); | |
| /** | |
| * Create debugging information entry for a | |
| * C++ static data member. | |
| * \param Builder The DIBuilder. | |
| * \param Scope Member scope. | |
| * \param Name Member name. | |
| * \param NameLen Length of member name. | |
| * \param File File where this member is declared. | |
| * \param LineNumber Line number. | |
| * \param Type Type of the static member. | |
| * \param Flags Flags to encode member attribute, e.g. private. | |
| * \param ConstantVal Const initializer of the member. | |
| * \param AlignInBits Member alignment. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateStaticMemberType( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, | |
| LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal, | |
| uint32_t AlignInBits); | |
| /** | |
| * Create debugging information entry for a pointer to member. | |
| * \param Builder The DIBuilder. | |
| * \param PointeeType Type pointed to by this pointer. | |
| * \param ClassType Type for which this pointer points to members of. | |
| * \param SizeInBits Size. | |
| * \param AlignInBits Alignment. | |
| * \param Flags Flags. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateMemberPointerType(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef PointeeType, | |
| LLVMMetadataRef ClassType, | |
| uint64_t SizeInBits, | |
| uint32_t AlignInBits, | |
| LLVMDIFlags Flags); | |
| /** | |
| * Create debugging information entry for Objective-C instance variable. | |
| * \param Builder The DIBuilder. | |
| * \param Name Member name. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| * \param File File where this member is defined. | |
| * \param LineNo Line number. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param OffsetInBits Member offset. | |
| * \param Flags Flags to encode member attribute, e.g. private | |
| * \param Ty Parent type. | |
| * \param PropertyNode Property associated with this ivar. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateObjCIVar(LLVMDIBuilderRef Builder, | |
| const char *Name, size_t NameLen, | |
| LLVMMetadataRef File, unsigned LineNo, | |
| uint64_t SizeInBits, uint32_t AlignInBits, | |
| uint64_t OffsetInBits, LLVMDIFlags Flags, | |
| LLVMMetadataRef Ty, LLVMMetadataRef PropertyNode); | |
| /** | |
| * Create debugging information entry for Objective-C property. | |
| * \param Builder The DIBuilder. | |
| * \param Name Property name. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| * \param File File where this property is defined. | |
| * \param LineNo Line number. | |
| * \param GetterName Name of the Objective C property getter selector. | |
| * \param GetterNameLen The length of the C string passed to \c GetterName. | |
| * \param SetterName Name of the Objective C property setter selector. | |
| * \param SetterNameLen The length of the C string passed to \c SetterName. | |
| * \param PropertyAttributes Objective C property attributes. | |
| * \param Ty Type. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateObjCProperty(LLVMDIBuilderRef Builder, | |
| const char *Name, size_t NameLen, | |
| LLVMMetadataRef File, unsigned LineNo, | |
| const char *GetterName, size_t GetterNameLen, | |
| const char *SetterName, size_t SetterNameLen, | |
| unsigned PropertyAttributes, | |
| LLVMMetadataRef Ty); | |
| /** | |
| * Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set. | |
| * \param Builder The DIBuilder. | |
| * \param Type The underlying type to which this pointer points. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Type); | |
| /** | |
| * Create debugging information entry for a qualified | |
| * type, e.g. 'const int'. | |
| * \param Builder The DIBuilder. | |
| * \param Tag Tag identifying type, | |
| * e.g. LLVMDWARFTypeQualifier_volatile_type | |
| * \param Type Base Type. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag, | |
| LLVMMetadataRef Type); | |
| /** | |
| * Create debugging information entry for a c++ | |
| * style reference or rvalue reference type. | |
| * \param Builder The DIBuilder. | |
| * \param Tag Tag identifying type, | |
| * \param Type Base Type. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag, | |
| LLVMMetadataRef Type); | |
| /** | |
| * Create C++11 nullptr type. | |
| * \param Builder The DIBuilder. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder); | |
| /** | |
| * Create debugging information entry for a typedef. | |
| * \param Builder The DIBuilder. | |
| * \param Type Original type. | |
| * \param Name Typedef name. | |
| * \param File File where this type is defined. | |
| * \param LineNo Line number. | |
| * \param Scope The surrounding context for the typedef. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Builder, LLVMMetadataRef Type, | |
| const char *Name, size_t NameLen, | |
| LLVMMetadataRef File, unsigned LineNo, | |
| LLVMMetadataRef Scope); | |
| /** | |
| * Create debugging information entry to establish inheritance relationship | |
| * between two types. | |
| * \param Builder The DIBuilder. | |
| * \param Ty Original type. | |
| * \param BaseTy Base type. Ty is inherits from base. | |
| * \param BaseOffset Base offset. | |
| * \param VBPtrOffset Virtual base pointer offset. | |
| * \param Flags Flags to describe inheritance attribute, e.g. private | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateInheritance(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Ty, LLVMMetadataRef BaseTy, | |
| uint64_t BaseOffset, uint32_t VBPtrOffset, | |
| LLVMDIFlags Flags); | |
| /** | |
| * Create a permanent forward-declared type. | |
| * \param Builder The DIBuilder. | |
| * \param Tag A unique tag for this type. | |
| * \param Name Type name. | |
| * \param NameLen Length of type name. | |
| * \param Scope Type scope. | |
| * \param File File where this type is defined. | |
| * \param Line Line number where this type is defined. | |
| * \param RuntimeLang Indicates runtime version for languages like | |
| * Objective-C. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param UniqueIdentifier A unique identifier for the type. | |
| * \param UniqueIdentifierLen Length of the unique identifier. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateForwardDecl( | |
| LLVMDIBuilderRef Builder, unsigned Tag, const char *Name, | |
| size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line, | |
| unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, | |
| const char *UniqueIdentifier, size_t UniqueIdentifierLen); | |
| /** | |
| * Create a temporary forward-declared type. | |
| * \param Builder The DIBuilder. | |
| * \param Tag A unique tag for this type. | |
| * \param Name Type name. | |
| * \param NameLen Length of type name. | |
| * \param Scope Type scope. | |
| * \param File File where this type is defined. | |
| * \param Line Line number where this type is defined. | |
| * \param RuntimeLang Indicates runtime version for languages like | |
| * Objective-C. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param Flags Flags. | |
| * \param UniqueIdentifier A unique identifier for the type. | |
| * \param UniqueIdentifierLen Length of the unique identifier. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateReplaceableCompositeType( | |
| LLVMDIBuilderRef Builder, unsigned Tag, const char *Name, | |
| size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line, | |
| unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, | |
| LLVMDIFlags Flags, const char *UniqueIdentifier, | |
| size_t UniqueIdentifierLen); | |
| /** | |
| * Create debugging information entry for a bit field member. | |
| * \param Builder The DIBuilder. | |
| * \param Scope Member scope. | |
| * \param Name Member name. | |
| * \param NameLen Length of member name. | |
| * \param File File where this member is defined. | |
| * \param LineNumber Line number. | |
| * \param SizeInBits Member size. | |
| * \param OffsetInBits Member offset. | |
| * \param StorageOffsetInBits Member storage offset. | |
| * \param Flags Flags to encode member attribute. | |
| * \param Type Parent type. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateBitFieldMemberType(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| const char *Name, size_t NameLen, | |
| LLVMMetadataRef File, unsigned LineNumber, | |
| uint64_t SizeInBits, | |
| uint64_t OffsetInBits, | |
| uint64_t StorageOffsetInBits, | |
| LLVMDIFlags Flags, LLVMMetadataRef Type); | |
| /** | |
| * Create debugging information entry for a class. | |
| * \param Scope Scope in which this class is defined. | |
| * \param Name Class name. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| * \param File File where this member is defined. | |
| * \param LineNumber Line number. | |
| * \param SizeInBits Member size. | |
| * \param AlignInBits Member alignment. | |
| * \param OffsetInBits Member offset. | |
| * \param Flags Flags to encode member attribute, e.g. private. | |
| * \param DerivedFrom Debug info of the base class of this type. | |
| * \param Elements Class members. | |
| * \param NumElements Number of class elements. | |
| * \param VTableHolder Debug info of the base class that contains vtable | |
| * for this type. This is used in | |
| * DW_AT_containing_type. See DWARF documentation | |
| * for more info. | |
| * \param TemplateParamsNode Template type parameters. | |
| * \param UniqueIdentifier A unique identifier for the type. | |
| * \param UniqueIdentifierLen Length of the unique identifier. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateClassType(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, const char *Name, size_t NameLen, | |
| LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits, | |
| uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags, | |
| LLVMMetadataRef DerivedFrom, | |
| LLVMMetadataRef *Elements, unsigned NumElements, | |
| LLVMMetadataRef VTableHolder, LLVMMetadataRef TemplateParamsNode, | |
| const char *UniqueIdentifier, size_t UniqueIdentifierLen); | |
| /** | |
| * Create a uniqued DIType* clone with FlagArtificial set. | |
| * \param Builder The DIBuilder. | |
| * \param Type The underlying type. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Type); | |
| /** | |
| * Get the name of this DIType. | |
| * \param DType The DIType. | |
| * \param Length The length of the returned string. | |
| * | |
| * @see DIType::getName() | |
| */ | |
| const char *LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length); | |
| /** | |
| * Get the size of this DIType in bits. | |
| * \param DType The DIType. | |
| * | |
| * @see DIType::getSizeInBits() | |
| */ | |
| uint64_t LLVMDITypeGetSizeInBits(LLVMMetadataRef DType); | |
| /** | |
| * Get the offset of this DIType in bits. | |
| * \param DType The DIType. | |
| * | |
| * @see DIType::getOffsetInBits() | |
| */ | |
| uint64_t LLVMDITypeGetOffsetInBits(LLVMMetadataRef DType); | |
| /** | |
| * Get the alignment of this DIType in bits. | |
| * \param DType The DIType. | |
| * | |
| * @see DIType::getAlignInBits() | |
| */ | |
| uint32_t LLVMDITypeGetAlignInBits(LLVMMetadataRef DType); | |
| /** | |
| * Get the source line where this DIType is declared. | |
| * \param DType The DIType. | |
| * | |
| * @see DIType::getLine() | |
| */ | |
| unsigned LLVMDITypeGetLine(LLVMMetadataRef DType); | |
| /** | |
| * Get the flags associated with this DIType. | |
| * \param DType The DIType. | |
| * | |
| * @see DIType::getFlags() | |
| */ | |
| LLVMDIFlags LLVMDITypeGetFlags(LLVMMetadataRef DType); | |
| /** | |
| * Create a descriptor for a value range. | |
| * \param Builder The DIBuilder. | |
| * \param LowerBound Lower bound of the subrange, e.g. 0 for C, 1 for Fortran. | |
| * \param Count Count of elements in the subrange. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Builder, | |
| int64_t LowerBound, | |
| int64_t Count); | |
| /** | |
| * Create an array of DI Nodes. | |
| * \param Builder The DIBuilder. | |
| * \param Data The DI Node elements. | |
| * \param NumElements Number of DI Node elements. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef *Data, | |
| size_t NumElements); | |
| /** | |
| * Create a new descriptor for the specified variable which has a complex | |
| * address expression for its address. | |
| * \param Builder The DIBuilder. | |
| * \param Addr An array of complex address operations. | |
| * \param Length Length of the address operation array. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Builder, | |
| int64_t *Addr, size_t Length); | |
| /** | |
| * Create a new descriptor for the specified variable that does not have an | |
| * address, but does have a constant value. | |
| * \param Builder The DIBuilder. | |
| * \param Value The constant value. | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateConstantValueExpression(LLVMDIBuilderRef Builder, | |
| int64_t Value); | |
| /** | |
| * Create a new descriptor for the specified variable. | |
| * \param Scope Variable scope. | |
| * \param Name Name of the variable. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| * \param Linkage Mangled name of the variable. | |
| * \param LinkLen The length of the C string passed to \c Linkage. | |
| * \param File File where this variable is defined. | |
| * \param LineNo Line number. | |
| * \param Ty Variable Type. | |
| * \param LocalToUnit Boolean flag indicate whether this variable is | |
| * externally visible or not. | |
| * \param Expr The location of the global relative to the attached | |
| * GlobalVariable. | |
| * \param Decl Reference to the corresponding declaration. | |
| * \param AlignInBits Variable alignment(or 0 if no alignment attr was | |
| * specified) | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateGlobalVariableExpression(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| const char *Name, size_t NameLen, | |
| const char *Linkage, size_t LinkLen, | |
| LLVMMetadataRef File, | |
| unsigned LineNo, | |
| LLVMMetadataRef Ty, | |
| LLVMBool LocalToUnit, | |
| LLVMMetadataRef Expr, | |
| LLVMMetadataRef Decl, | |
| uint32_t AlignInBits); | |
| /** | |
| * Create a new temporary \c MDNode. Suitable for use in constructing cyclic | |
| * \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd, | |
| * and must be manually deleted with \c LLVMDisposeTemporaryMDNode. | |
| * \param Ctx The context in which to construct the temporary node. | |
| * \param Data The metadata elements. | |
| * \param NumElements Number of metadata elements. | |
| */ | |
| LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data, | |
| size_t NumElements); | |
| /** | |
| * Deallocate a temporary node. | |
| * | |
| * Calls \c replaceAllUsesWith(nullptr) before deleting, so any remaining | |
| * references will be reset. | |
| * \param TempNode The temporary metadata node. | |
| */ | |
| void LLVMDisposeTemporaryMDNode(LLVMMetadataRef TempNode); | |
| /** | |
| * Replace all uses of temporary metadata. | |
| * \param TempTargetMetadata The temporary metadata node. | |
| * \param Replacement The replacement metadata node. | |
| */ | |
| void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata, | |
| LLVMMetadataRef Replacement); | |
| /** | |
| * Create a new descriptor for the specified global variable that is temporary | |
| * and meant to be RAUWed. | |
| * \param Scope Variable scope. | |
| * \param Name Name of the variable. | |
| * \param NameLen The length of the C string passed to \c Name. | |
| * \param Linkage Mangled name of the variable. | |
| * \param LnkLen The length of the C string passed to \c Linkage. | |
| * \param File File where this variable is defined. | |
| * \param LineNo Line number. | |
| * \param Ty Variable Type. | |
| * \param LocalToUnit Boolean flag indicate whether this variable is | |
| * externally visible or not. | |
| * \param Decl Reference to the corresponding declaration. | |
| * \param AlignInBits Variable alignment(or 0 if no alignment attr was | |
| * specified) | |
| */ | |
| LLVMMetadataRef | |
| LLVMDIBuilderCreateTempGlobalVariableFwdDecl(LLVMDIBuilderRef Builder, | |
| LLVMMetadataRef Scope, | |
| const char *Name, size_t NameLen, | |
| const char *Linkage, size_t LnkLen, | |
| LLVMMetadataRef File, | |
| unsigned LineNo, | |
| LLVMMetadataRef Ty, | |
| LLVMBool LocalToUnit, | |
| LLVMMetadataRef Decl, | |
| uint32_t AlignInBits); | |
| /** | |
| * Insert a new llvm.dbg.declare intrinsic call before the given instruction. | |
| * \param Builder The DIBuilder. | |
| * \param Storage The storage of the variable to declare. | |
| * \param VarInfo The variable's debug info descriptor. | |
| * \param Expr A complex location expression for the variable. | |
| * \param DebugLoc Debug info location. | |
| * \param Instr Instruction acting as a location for the new intrinsic. | |
| */ | |
| LLVMValueRef LLVMDIBuilderInsertDeclareBefore( | |
| LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, | |
| LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr); | |
| /** | |
| * Insert a new llvm.dbg.declare intrinsic call at the end of the given basic | |
| * block. If the basic block has a terminator instruction, the intrinsic is | |
| * inserted before that terminator instruction. | |
| * \param Builder The DIBuilder. | |
| * \param Storage The storage of the variable to declare. | |
| * \param VarInfo The variable's debug info descriptor. | |
| * \param Expr A complex location expression for the variable. | |
| * \param DebugLoc Debug info location. | |
| * \param Block Basic block acting as a location for the new intrinsic. | |
| */ | |
| LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd( | |
| LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, | |
| LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block); | |
| /** | |
| * Insert a new llvm.dbg.value intrinsic call before the given instruction. | |
| * \param Builder The DIBuilder. | |
| * \param Val The value of the variable. | |
| * \param VarInfo The variable's debug info descriptor. | |
| * \param Expr A complex location expression for the variable. | |
| * \param DebugLoc Debug info location. | |
| * \param Instr Instruction acting as a location for the new intrinsic. | |
| */ | |
| LLVMValueRef LLVMDIBuilderInsertDbgValueBefore(LLVMDIBuilderRef Builder, | |
| LLVMValueRef Val, | |
| LLVMMetadataRef VarInfo, | |
| LLVMMetadataRef Expr, | |
| LLVMMetadataRef DebugLoc, | |
| LLVMValueRef Instr); | |
| /** | |
| * Insert a new llvm.dbg.value intrinsic call at the end of the given basic | |
| * block. If the basic block has a terminator instruction, the intrinsic is | |
| * inserted before that terminator instruction. | |
| * \param Builder The DIBuilder. | |
| * \param Val The value of the variable. | |
| * \param VarInfo The variable's debug info descriptor. | |
| * \param Expr A complex location expression for the variable. | |
| * \param DebugLoc Debug info location. | |
| * \param Block Basic block acting as a location for the new intrinsic. | |
| */ | |
| LLVMValueRef LLVMDIBuilderInsertDbgValueAtEnd(LLVMDIBuilderRef Builder, | |
| LLVMValueRef Val, | |
| LLVMMetadataRef VarInfo, | |
| LLVMMetadataRef Expr, | |
| LLVMMetadataRef DebugLoc, | |
| LLVMBasicBlockRef Block); | |
| /** | |
| * Create a new descriptor for a local auto variable. | |
| * \param Builder The DIBuilder. | |
| * \param Scope The local scope the variable is declared in. | |
| * \param Name Variable name. | |
| * \param NameLen Length of variable name. | |
| * \param File File where this variable is defined. | |
| * \param LineNo Line number. | |
| * \param Ty Metadata describing the type of the variable. | |
| * \param AlwaysPreserve If true, this descriptor will survive optimizations. | |
| * \param Flags Flags. | |
| * \param AlignInBits Variable alignment. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateAutoVariable( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, | |
| LLVMBool AlwaysPreserve, LLVMDIFlags Flags, uint32_t AlignInBits); | |
| /** | |
| * Create a new descriptor for a function parameter variable. | |
| * \param Builder The DIBuilder. | |
| * \param Scope The local scope the variable is declared in. | |
| * \param Name Variable name. | |
| * \param NameLen Length of variable name. | |
| * \param ArgNo Unique argument number for this variable; starts at 1. | |
| * \param File File where this variable is defined. | |
| * \param LineNo Line number. | |
| * \param Ty Metadata describing the type of the variable. | |
| * \param AlwaysPreserve If true, this descriptor will survive optimizations. | |
| * \param Flags Flags. | |
| */ | |
| LLVMMetadataRef LLVMDIBuilderCreateParameterVariable( | |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, | |
| size_t NameLen, unsigned ArgNo, LLVMMetadataRef File, unsigned LineNo, | |
| LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags); | |
| /** | |
| * Get the metadata of the subprogram attached to a function. | |
| * | |
| * @see llvm::Function::getSubprogram() | |
| */ | |
| LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func); | |
| /** | |
| * Set the subprogram attached to a function. | |
| * | |
| * @see llvm::Function::setSubprogram() | |
| */ | |
| void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP); | |
| #ifdef __cplusplus | |
| } /* end extern "C" */ | |
| #endif | |
| #endif |