LLVM 19.0.0git
DebugInfo.h
Go to the documentation of this file.
1//===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8///
9/// This file declares the C API endpoints for generating DWARF Debug Info
10///
11/// Note: This interface is experimental. It is *NOT* stable, and may be
12/// changed without warning.
13///
14//===----------------------------------------------------------------------===//
15
16#ifndef LLVM_C_DEBUGINFO_H
17#define LLVM_C_DEBUGINFO_H
18
19#include "llvm-c/ExternC.h"
20#include "llvm-c/Types.h"
21
23
24/**
25 * @defgroup LLVMCCoreDebugInfo Debug Information
26 * @ingroup LLVMCCore
27 *
28 * @{
29 */
30
31/**
32 * Debug info flags.
33 */
34typedef enum {
63 LLVMDIFlagThunk = 1 << 25,
67 LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5),
74
75/**
76 * Source languages known by DWARF.
77 */
78typedef enum {
89 // New in DWARF v3:
99 // New in DWARF v4:
101 // New in DWARF v5:
129 // Vendor extensions:
134
135/**
136 * The amount of debug information to emit.
137 */
138typedef enum {
143
144/**
145 * The kind of metadata nodes.
146 */
147enum {
184};
185typedef unsigned LLVMMetadataKind;
186
187/**
188 * An LLVM DWARF type encoding.
189 */
190typedef unsigned LLVMDWARFTypeEncoding;
191
192/**
193 * Describes the kind of macro declaration used for LLVMDIBuilderCreateMacro.
194 * @see llvm::dwarf::MacinfoRecordType
195 * @note Values are from DW_MACINFO_* constants in the DWARF specification.
196 */
197typedef enum {
204
205/**
206 * The current debug metadata version number.
207 */
208unsigned LLVMDebugMetadataVersion(void);
209
210/**
211 * The version of debug metadata that's present in the provided \c Module.
212 */
214
215/**
216 * Strip debug info in the module if it exists.
217 * To do this, we remove all calls to the debugger intrinsics and any named
218 * metadata for debugging. We also remove debug locations for instructions.
219 * Return true if module is modified.
220 */
222
223/**
224 * Construct a builder for a module, and do not allow for unresolved nodes
225 * attached to the module.
226 */
228
229/**
230 * Construct a builder for a module and collect unresolved nodes attached
231 * to the module in order to resolve cycles during a call to
232 * \c LLVMDIBuilderFinalize.
233 */
235
236/**
237 * Deallocates the \c DIBuilder and everything it owns.
238 * @note You must call \c LLVMDIBuilderFinalize before this
239 */
241
242/**
243 * Construct any deferred debug info descriptors.
244 */
246
247/**
248 * Finalize a specific subprogram.
249 * No new variables may be added to this subprogram afterwards.
250 */
252 LLVMMetadataRef Subprogram);
253
254/**
255 * A CompileUnit provides an anchor for all debugging
256 * information generated during this instance of compilation.
257 * \param Lang Source programming language, eg.
258 * \c LLVMDWARFSourceLanguageC99
259 * \param FileRef File info.
260 * \param Producer Identify the producer of debugging information
261 * and code. Usually this is a compiler
262 * version string.
263 * \param ProducerLen The length of the C string passed to \c Producer.
264 * \param isOptimized A boolean flag which indicates whether optimization
265 * is enabled or not.
266 * \param Flags This string lists command line options. This
267 * string is directly embedded in debug info
268 * output which may be used by a tool
269 * analyzing generated debugging information.
270 * \param FlagsLen The length of the C string passed to \c Flags.
271 * \param RuntimeVer This indicates runtime version for languages like
272 * Objective-C.
273 * \param SplitName The name of the file that we'll split debug info
274 * out into.
275 * \param SplitNameLen The length of the C string passed to \c SplitName.
276 * \param Kind The kind of debug information to generate.
277 * \param DWOId The DWOId if this is a split skeleton compile unit.
278 * \param SplitDebugInlining Whether to emit inline debug info.
279 * \param DebugInfoForProfiling Whether to emit extra debug info for
280 * profile collection.
281 * \param SysRoot The Clang system root (value of -isysroot).
282 * \param SysRootLen The length of the C string passed to \c SysRoot.
283 * \param SDK The SDK. On Darwin, the last component of the sysroot.
284 * \param SDKLen The length of the C string passed to \c SDK.
285 */
288 LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,
289 LLVMBool isOptimized, const char *Flags, size_t FlagsLen,
290 unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen,
291 LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining,
292 LLVMBool DebugInfoForProfiling, const char *SysRoot, size_t SysRootLen,
293 const char *SDK, size_t SDKLen);
294
295/**
296 * Create a file descriptor to hold debugging information for a file.
297 * \param Builder The \c DIBuilder.
298 * \param Filename File name.
299 * \param FilenameLen The length of the C string passed to \c Filename.
300 * \param Directory Directory.
301 * \param DirectoryLen The length of the C string passed to \c Directory.
302 */
304LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
305 size_t FilenameLen, const char *Directory,
306 size_t DirectoryLen);
307
308/**
309 * Creates a new descriptor for a module with the specified parent scope.
310 * \param Builder The \c DIBuilder.
311 * \param ParentScope The parent scope containing this module declaration.
312 * \param Name Module name.
313 * \param NameLen The length of the C string passed to \c Name.
314 * \param ConfigMacros A space-separated shell-quoted list of -D macro
315 definitions as they would appear on a command line.
316 * \param ConfigMacrosLen The length of the C string passed to \c ConfigMacros.
317 * \param IncludePath The path to the module map file.
318 * \param IncludePathLen The length of the C string passed to \c IncludePath.
319 * \param APINotesFile The path to an API notes file for the module.
320 * \param APINotesFileLen The length of the C string passed to \c APINotestFile.
321 */
324 const char *Name, size_t NameLen,
325 const char *ConfigMacros, size_t ConfigMacrosLen,
326 const char *IncludePath, size_t IncludePathLen,
327 const char *APINotesFile, size_t APINotesFileLen);
328
329/**
330 * Creates a new descriptor for a namespace with the specified parent scope.
331 * \param Builder The \c DIBuilder.
332 * \param ParentScope The parent scope containing this module declaration.
333 * \param Name NameSpace name.
334 * \param NameLen The length of the C string passed to \c Name.
335 * \param ExportSymbols Whether or not the namespace exports symbols, e.g.
336 * this is true of C++ inline namespaces.
337 */
340 LLVMMetadataRef ParentScope,
341 const char *Name, size_t NameLen,
342 LLVMBool ExportSymbols);
343
344/**
345 * Create a new descriptor for the specified subprogram.
346 * \param Builder The \c DIBuilder.
347 * \param Scope Function scope.
348 * \param Name Function name.
349 * \param NameLen Length of enumeration name.
350 * \param LinkageName Mangled function name.
351 * \param LinkageNameLen Length of linkage name.
352 * \param File File where this variable is defined.
353 * \param LineNo Line number.
354 * \param Ty Function type.
355 * \param IsLocalToUnit True if this function is not externally visible.
356 * \param IsDefinition True if this is a function definition.
357 * \param ScopeLine Set to the beginning of the scope this starts
358 * \param Flags E.g.: \c LLVMDIFlagLValueReference. These flags are
359 * used to emit dwarf attributes.
360 * \param IsOptimized True if optimization is ON.
361 */
363 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
364 size_t NameLen, const char *LinkageName, size_t LinkageNameLen,
365 LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
366 LLVMBool IsLocalToUnit, LLVMBool IsDefinition,
367 unsigned ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized);
368
369/**
370 * Create a descriptor for a lexical block with the specified parent context.
371 * \param Builder The \c DIBuilder.
372 * \param Scope Parent lexical block.
373 * \param File Source file.
374 * \param Line The line in the source file.
375 * \param Column The column in the source file.
376 */
378 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope,
379 LLVMMetadataRef File, unsigned Line, unsigned Column);
380
381/**
382 * Create a descriptor for a lexical block with a new file attached.
383 * \param Builder The \c DIBuilder.
384 * \param Scope Lexical block.
385 * \param File Source file.
386 * \param Discriminator DWARF path discriminator value.
387 */
390 LLVMMetadataRef Scope,
391 LLVMMetadataRef File,
392 unsigned Discriminator);
393
394/**
395 * Create a descriptor for an imported namespace. Suitable for e.g. C++
396 * using declarations.
397 * \param Builder The \c DIBuilder.
398 * \param Scope The scope this module is imported into
399 * \param File File where the declaration is located.
400 * \param Line Line number of the declaration.
401 */
404 LLVMMetadataRef Scope,
406 LLVMMetadataRef File,
407 unsigned Line);
408
409/**
410 * Create a descriptor for an imported module that aliases another
411 * imported entity descriptor.
412 * \param Builder The \c DIBuilder.
413 * \param Scope The scope this module is imported into
414 * \param ImportedEntity Previous imported entity to alias.
415 * \param File File where the declaration is located.
416 * \param Line Line number of the declaration.
417 * \param Elements Renamed elements.
418 * \param NumElements Number of renamed elements.
419 */
421 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope,
422 LLVMMetadataRef ImportedEntity, LLVMMetadataRef File, unsigned Line,
423 LLVMMetadataRef *Elements, unsigned NumElements);
424
425/**
426 * Create a descriptor for an imported module.
427 * \param Builder The \c DIBuilder.
428 * \param Scope The scope this module is imported into
429 * \param M The module being imported here
430 * \param File File where the declaration is located.
431 * \param Line Line number of the declaration.
432 * \param Elements Renamed elements.
433 * \param NumElements Number of renamed elements.
434 */
437 LLVMMetadataRef File, unsigned Line, LLVMMetadataRef *Elements,
438 unsigned NumElements);
439
440/**
441 * Create a descriptor for an imported function, type, or variable. Suitable
442 * for e.g. FORTRAN-style USE declarations.
443 * \param Builder The DIBuilder.
444 * \param Scope The scope this module is imported into.
445 * \param Decl The declaration (or definition) of a function, type,
446 or variable.
447 * \param File File where the declaration is located.
448 * \param Line Line number of the declaration.
449 * \param Name A name that uniquely identifies this imported
450 declaration.
451 * \param NameLen The length of the C string passed to \c Name.
452 * \param Elements Renamed elements.
453 * \param NumElements Number of renamed elements.
454 */
457 LLVMMetadataRef File, unsigned Line, const char *Name, size_t NameLen,
458 LLVMMetadataRef *Elements, unsigned NumElements);
459
460/**
461 * Creates a new DebugLocation that describes a source location.
462 * \param Line The line in the source file.
463 * \param Column The column in the source file.
464 * \param Scope The scope in which the location resides.
465 * \param InlinedAt The scope where this location was inlined, if at all.
466 * (optional).
467 * \note If the item to which this location is attached cannot be
468 * attributed to a source line, pass 0 for the line and column.
469 */
472 unsigned Column, LLVMMetadataRef Scope,
473 LLVMMetadataRef InlinedAt);
474
475/**
476 * Get the line number of this debug location.
477 * \param Location The debug location.
478 *
479 * @see DILocation::getLine()
480 */
481unsigned LLVMDILocationGetLine(LLVMMetadataRef Location);
482
483/**
484 * Get the column number of this debug location.
485 * \param Location The debug location.
486 *
487 * @see DILocation::getColumn()
488 */
490
491/**
492 * Get the local scope associated with this debug location.
493 * \param Location The debug location.
494 *
495 * @see DILocation::getScope()
496 */
498
499/**
500 * Get the "inline at" location associated with this debug location.
501 * \param Location The debug location.
502 *
503 * @see DILocation::getInlinedAt()
504 */
506
507/**
508 * Get the metadata of the file associated with a given scope.
509 * \param Scope The scope object.
510 *
511 * @see DIScope::getFile()
512 */
514
515/**
516 * Get the directory of a given file.
517 * \param File The file object.
518 * \param Len The length of the returned string.
519 *
520 * @see DIFile::getDirectory()
521 */
522const char *LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len);
523
524/**
525 * Get the name of a given file.
526 * \param File The file object.
527 * \param Len The length of the returned string.
528 *
529 * @see DIFile::getFilename()
530 */
531const char *LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len);
532
533/**
534 * Get the source of a given file.
535 * \param File The file object.
536 * \param Len The length of the returned string.
537 *
538 * @see DIFile::getSource()
539 */
540const char *LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len);
541
542/**
543 * Create a type array.
544 * \param Builder The DIBuilder.
545 * \param Data The type elements.
546 * \param NumElements Number of type elements.
547 */
549 LLVMMetadataRef *Data,
550 size_t NumElements);
551
552/**
553 * Create subroutine type.
554 * \param Builder The DIBuilder.
555 * \param File The file in which the subroutine resides.
556 * \param ParameterTypes An array of subroutine parameter types. This
557 * includes return type at 0th index.
558 * \param NumParameterTypes The number of parameter types in \c ParameterTypes
559 * \param Flags E.g.: \c LLVMDIFlagLValueReference.
560 * These flags are used to emit dwarf attributes.
561 */
564 LLVMMetadataRef File,
565 LLVMMetadataRef *ParameterTypes,
566 unsigned NumParameterTypes,
567 LLVMDIFlags Flags);
568
569/**
570 * Create debugging information entry for a macro.
571 * @param Builder The DIBuilder.
572 * @param ParentMacroFile Macro parent (could be NULL).
573 * @param Line Source line number where the macro is defined.
574 * @param RecordType DW_MACINFO_define or DW_MACINFO_undef.
575 * @param Name Macro name.
576 * @param NameLen Macro name length.
577 * @param Value Macro value.
578 * @param ValueLen Macro value length.
579 */
581 LLVMMetadataRef ParentMacroFile,
582 unsigned Line,
584 const char *Name, size_t NameLen,
585 const char *Value, size_t ValueLen);
586
587/**
588 * Create debugging information temporary entry for a macro file.
589 * List of macro node direct children will be calculated by DIBuilder,
590 * using the \p ParentMacroFile relationship.
591 * @param Builder The DIBuilder.
592 * @param ParentMacroFile Macro parent (could be NULL).
593 * @param Line Source line number where the macro file is included.
594 * @param File File descriptor containing the name of the macro file.
595 */
598 LLVMMetadataRef ParentMacroFile, unsigned Line,
599 LLVMMetadataRef File);
600
601/**
602 * Create debugging information entry for an enumerator.
603 * @param Builder The DIBuilder.
604 * @param Name Enumerator name.
605 * @param NameLen Length of enumerator name.
606 * @param Value Enumerator value.
607 * @param IsUnsigned True if the value is unsigned.
608 */
610 const char *Name, size_t NameLen,
611 int64_t Value,
612 LLVMBool IsUnsigned);
613
614/**
615 * Create debugging information entry for an enumeration.
616 * \param Builder The DIBuilder.
617 * \param Scope Scope in which this enumeration is defined.
618 * \param Name Enumeration name.
619 * \param NameLen Length of enumeration name.
620 * \param File File where this member is defined.
621 * \param LineNumber Line number.
622 * \param SizeInBits Member size.
623 * \param AlignInBits Member alignment.
624 * \param Elements Enumeration elements.
625 * \param NumElements Number of enumeration elements.
626 * \param ClassTy Underlying type of a C++11/ObjC fixed enum.
627 */
629 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
630 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
631 uint64_t SizeInBits, uint32_t AlignInBits, LLVMMetadataRef *Elements,
632 unsigned NumElements, LLVMMetadataRef ClassTy);
633
634/**
635 * Create debugging information entry for a union.
636 * \param Builder The DIBuilder.
637 * \param Scope Scope in which this union is defined.
638 * \param Name Union name.
639 * \param NameLen Length of union name.
640 * \param File File where this member is defined.
641 * \param LineNumber Line number.
642 * \param SizeInBits Member size.
643 * \param AlignInBits Member alignment.
644 * \param Flags Flags to encode member attribute, e.g. private
645 * \param Elements Union elements.
646 * \param NumElements Number of union elements.
647 * \param RunTimeLang Optional parameter, Objective-C runtime version.
648 * \param UniqueId A unique identifier for the union.
649 * \param UniqueIdLen Length of unique identifier.
650 */
652 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
653 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
654 uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
655 LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang,
656 const char *UniqueId, size_t UniqueIdLen);
657
658
659/**
660 * Create debugging information entry for an array.
661 * \param Builder The DIBuilder.
662 * \param Size Array size.
663 * \param AlignInBits Alignment.
664 * \param Ty Element type.
665 * \param Subscripts Subscripts.
666 * \param NumSubscripts Number of subscripts.
667 */
670 uint32_t AlignInBits, LLVMMetadataRef Ty,
671 LLVMMetadataRef *Subscripts,
672 unsigned NumSubscripts);
673
674/**
675 * Create debugging information entry for a vector type.
676 * \param Builder The DIBuilder.
677 * \param Size Vector size.
678 * \param AlignInBits Alignment.
679 * \param Ty Element type.
680 * \param Subscripts Subscripts.
681 * \param NumSubscripts Number of subscripts.
682 */
685 uint32_t AlignInBits, LLVMMetadataRef Ty,
686 LLVMMetadataRef *Subscripts,
687 unsigned NumSubscripts);
688
689/**
690 * Create a DWARF unspecified type.
691 * \param Builder The DIBuilder.
692 * \param Name The unspecified type's name.
693 * \param NameLen Length of type name.
694 */
697 size_t NameLen);
698
699/**
700 * Create debugging information entry for a basic
701 * type.
702 * \param Builder The DIBuilder.
703 * \param Name Type name.
704 * \param NameLen Length of type name.
705 * \param SizeInBits Size of the type.
706 * \param Encoding DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float.
707 * \param Flags Flags to encode optional attribute like endianity
708 */
711 size_t NameLen, uint64_t SizeInBits,
712 LLVMDWARFTypeEncoding Encoding,
713 LLVMDIFlags Flags);
714
715/**
716 * Create debugging information entry for a pointer.
717 * \param Builder The DIBuilder.
718 * \param PointeeTy Type pointed by this pointer.
719 * \param SizeInBits Size.
720 * \param AlignInBits Alignment. (optional, pass 0 to ignore)
721 * \param AddressSpace DWARF address space. (optional, pass 0 to ignore)
722 * \param Name Pointer type name. (optional)
723 * \param NameLen Length of pointer type name. (optional)
724 */
726 LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy,
727 uint64_t SizeInBits, uint32_t AlignInBits, unsigned AddressSpace,
728 const char *Name, size_t NameLen);
729
730/**
731 * Create debugging information entry for a struct.
732 * \param Builder The DIBuilder.
733 * \param Scope Scope in which this struct is defined.
734 * \param Name Struct name.
735 * \param NameLen Struct name length.
736 * \param File File where this member is defined.
737 * \param LineNumber Line number.
738 * \param SizeInBits Member size.
739 * \param AlignInBits Member alignment.
740 * \param Flags Flags to encode member attribute, e.g. private
741 * \param Elements Struct elements.
742 * \param NumElements Number of struct elements.
743 * \param RunTimeLang Optional parameter, Objective-C runtime version.
744 * \param VTableHolder The object containing the vtable for the struct.
745 * \param UniqueId A unique identifier for the struct.
746 * \param UniqueIdLen Length of the unique identifier for the struct.
747 */
749 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
750 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
751 uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
752 LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements,
753 unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder,
754 const char *UniqueId, size_t UniqueIdLen);
755
756/**
757 * Create debugging information entry for a member.
758 * \param Builder The DIBuilder.
759 * \param Scope Member scope.
760 * \param Name Member name.
761 * \param NameLen Length of member name.
762 * \param File File where this member is defined.
763 * \param LineNo Line number.
764 * \param SizeInBits Member size.
765 * \param AlignInBits Member alignment.
766 * \param OffsetInBits Member offset.
767 * \param Flags Flags to encode member attribute, e.g. private
768 * \param Ty Parent type.
769 */
771 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
772 size_t NameLen, LLVMMetadataRef File, unsigned LineNo,
773 uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
774 LLVMDIFlags Flags, LLVMMetadataRef Ty);
775
776/**
777 * Create debugging information entry for a
778 * C++ static data member.
779 * \param Builder The DIBuilder.
780 * \param Scope Member scope.
781 * \param Name Member name.
782 * \param NameLen Length of member name.
783 * \param File File where this member is declared.
784 * \param LineNumber Line number.
785 * \param Type Type of the static member.
786 * \param Flags Flags to encode member attribute, e.g. private.
787 * \param ConstantVal Const initializer of the member.
788 * \param AlignInBits Member alignment.
789 */
792 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
793 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
794 LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal,
795 uint32_t AlignInBits);
796
797/**
798 * Create debugging information entry for a pointer to member.
799 * \param Builder The DIBuilder.
800 * \param PointeeType Type pointed to by this pointer.
801 * \param ClassType Type for which this pointer points to members of.
802 * \param SizeInBits Size.
803 * \param AlignInBits Alignment.
804 * \param Flags Flags.
805 */
808 LLVMMetadataRef PointeeType,
809 LLVMMetadataRef ClassType,
810 uint64_t SizeInBits,
811 uint32_t AlignInBits,
812 LLVMDIFlags Flags);
813/**
814 * Create debugging information entry for Objective-C instance variable.
815 * \param Builder The DIBuilder.
816 * \param Name Member name.
817 * \param NameLen The length of the C string passed to \c Name.
818 * \param File File where this member is defined.
819 * \param LineNo Line number.
820 * \param SizeInBits Member size.
821 * \param AlignInBits Member alignment.
822 * \param OffsetInBits Member offset.
823 * \param Flags Flags to encode member attribute, e.g. private
824 * \param Ty Parent type.
825 * \param PropertyNode Property associated with this ivar.
826 */
829 const char *Name, size_t NameLen,
830 LLVMMetadataRef File, unsigned LineNo,
831 uint64_t SizeInBits, uint32_t AlignInBits,
832 uint64_t OffsetInBits, LLVMDIFlags Flags,
833 LLVMMetadataRef Ty, LLVMMetadataRef PropertyNode);
834
835/**
836 * Create debugging information entry for Objective-C property.
837 * \param Builder The DIBuilder.
838 * \param Name Property name.
839 * \param NameLen The length of the C string passed to \c Name.
840 * \param File File where this property is defined.
841 * \param LineNo Line number.
842 * \param GetterName Name of the Objective C property getter selector.
843 * \param GetterNameLen The length of the C string passed to \c GetterName.
844 * \param SetterName Name of the Objective C property setter selector.
845 * \param SetterNameLen The length of the C string passed to \c SetterName.
846 * \param PropertyAttributes Objective C property attributes.
847 * \param Ty Type.
848 */
851 const char *Name, size_t NameLen,
852 LLVMMetadataRef File, unsigned LineNo,
853 const char *GetterName, size_t GetterNameLen,
854 const char *SetterName, size_t SetterNameLen,
855 unsigned PropertyAttributes,
856 LLVMMetadataRef Ty);
857
858/**
859 * Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set.
860 * \param Builder The DIBuilder.
861 * \param Type The underlying type to which this pointer points.
862 */
866
867/**
868 * Create debugging information entry for a qualified
869 * type, e.g. 'const int'.
870 * \param Builder The DIBuilder.
871 * \param Tag Tag identifying type,
872 * e.g. LLVMDWARFTypeQualifier_volatile_type
873 * \param Type Base Type.
874 */
878
879/**
880 * Create debugging information entry for a c++
881 * style reference or rvalue reference type.
882 * \param Builder The DIBuilder.
883 * \param Tag Tag identifying type,
884 * \param Type Base Type.
885 */
889
890/**
891 * Create C++11 nullptr type.
892 * \param Builder The DIBuilder.
893 */
896
897/**
898 * Create debugging information entry for a typedef.
899 * \param Builder The DIBuilder.
900 * \param Type Original type.
901 * \param Name Typedef name.
902 * \param File File where this type is defined.
903 * \param LineNo Line number.
904 * \param Scope The surrounding context for the typedef.
905 */
908 const char *Name, size_t NameLen,
909 LLVMMetadataRef File, unsigned LineNo,
910 LLVMMetadataRef Scope, uint32_t AlignInBits);
911
912/**
913 * Create debugging information entry to establish inheritance relationship
914 * between two types.
915 * \param Builder The DIBuilder.
916 * \param Ty Original type.
917 * \param BaseTy Base type. Ty is inherits from base.
918 * \param BaseOffset Base offset.
919 * \param VBPtrOffset Virtual base pointer offset.
920 * \param Flags Flags to describe inheritance attribute, e.g. private
921 */
925 uint64_t BaseOffset, uint32_t VBPtrOffset,
926 LLVMDIFlags Flags);
927
928/**
929 * Create a permanent forward-declared type.
930 * \param Builder The DIBuilder.
931 * \param Tag A unique tag for this type.
932 * \param Name Type name.
933 * \param NameLen Length of type name.
934 * \param Scope Type scope.
935 * \param File File where this type is defined.
936 * \param Line Line number where this type is defined.
937 * \param RuntimeLang Indicates runtime version for languages like
938 * Objective-C.
939 * \param SizeInBits Member size.
940 * \param AlignInBits Member alignment.
941 * \param UniqueIdentifier A unique identifier for the type.
942 * \param UniqueIdentifierLen Length of the unique identifier.
943 */
945 LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
946 size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
947 unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
948 const char *UniqueIdentifier, size_t UniqueIdentifierLen);
949
950/**
951 * Create a temporary forward-declared type.
952 * \param Builder The DIBuilder.
953 * \param Tag A unique tag for this type.
954 * \param Name Type name.
955 * \param NameLen Length of type name.
956 * \param Scope Type scope.
957 * \param File File where this type is defined.
958 * \param Line Line number where this type is defined.
959 * \param RuntimeLang Indicates runtime version for languages like
960 * Objective-C.
961 * \param SizeInBits Member size.
962 * \param AlignInBits Member alignment.
963 * \param Flags Flags.
964 * \param UniqueIdentifier A unique identifier for the type.
965 * \param UniqueIdentifierLen Length of the unique identifier.
966 */
969 LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
970 size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
971 unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
972 LLVMDIFlags Flags, const char *UniqueIdentifier,
973 size_t UniqueIdentifierLen);
974
975/**
976 * Create debugging information entry for a bit field member.
977 * \param Builder The DIBuilder.
978 * \param Scope Member scope.
979 * \param Name Member name.
980 * \param NameLen Length of member name.
981 * \param File File where this member is defined.
982 * \param LineNumber Line number.
983 * \param SizeInBits Member size.
984 * \param OffsetInBits Member offset.
985 * \param StorageOffsetInBits Member storage offset.
986 * \param Flags Flags to encode member attribute.
987 * \param Type Parent type.
988 */
991 LLVMMetadataRef Scope,
992 const char *Name, size_t NameLen,
993 LLVMMetadataRef File, unsigned LineNumber,
994 uint64_t SizeInBits,
995 uint64_t OffsetInBits,
996 uint64_t StorageOffsetInBits,
998
999/**
1000 * Create debugging information entry for a class.
1001 * \param Scope Scope in which this class is defined.
1002 * \param Name Class name.
1003 * \param NameLen The length of the C string passed to \c Name.
1004 * \param File File where this member is defined.
1005 * \param LineNumber Line number.
1006 * \param SizeInBits Member size.
1007 * \param AlignInBits Member alignment.
1008 * \param OffsetInBits Member offset.
1009 * \param Flags Flags to encode member attribute, e.g. private.
1010 * \param DerivedFrom Debug info of the base class of this type.
1011 * \param Elements Class members.
1012 * \param NumElements Number of class elements.
1013 * \param VTableHolder Debug info of the base class that contains vtable
1014 * for this type. This is used in
1015 * DW_AT_containing_type. See DWARF documentation
1016 * for more info.
1017 * \param TemplateParamsNode Template type parameters.
1018 * \param UniqueIdentifier A unique identifier for the type.
1019 * \param UniqueIdentifierLen Length of the unique identifier.
1020 */
1022 LLVMMetadataRef Scope, const char *Name, size_t NameLen,
1023 LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
1024 uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags,
1025 LLVMMetadataRef DerivedFrom,
1026 LLVMMetadataRef *Elements, unsigned NumElements,
1027 LLVMMetadataRef VTableHolder, LLVMMetadataRef TemplateParamsNode,
1028 const char *UniqueIdentifier, size_t UniqueIdentifierLen);
1029
1030/**
1031 * Create a uniqued DIType* clone with FlagArtificial set.
1032 * \param Builder The DIBuilder.
1033 * \param Type The underlying type.
1034 */
1038
1039/**
1040 * Get the name of this DIType.
1041 * \param DType The DIType.
1042 * \param Length The length of the returned string.
1043 *
1044 * @see DIType::getName()
1045 */
1046const char *LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length);
1047
1048/**
1049 * Get the size of this DIType in bits.
1050 * \param DType The DIType.
1051 *
1052 * @see DIType::getSizeInBits()
1053 */
1055
1056/**
1057 * Get the offset of this DIType in bits.
1058 * \param DType The DIType.
1059 *
1060 * @see DIType::getOffsetInBits()
1061 */
1063
1064/**
1065 * Get the alignment of this DIType in bits.
1066 * \param DType The DIType.
1067 *
1068 * @see DIType::getAlignInBits()
1069 */
1071
1072/**
1073 * Get the source line where this DIType is declared.
1074 * \param DType The DIType.
1075 *
1076 * @see DIType::getLine()
1077 */
1078unsigned LLVMDITypeGetLine(LLVMMetadataRef DType);
1079
1080/**
1081 * Get the flags associated with this DIType.
1082 * \param DType The DIType.
1083 *
1084 * @see DIType::getFlags()
1085 */
1087
1088/**
1089 * Create a descriptor for a value range.
1090 * \param Builder The DIBuilder.
1091 * \param LowerBound Lower bound of the subrange, e.g. 0 for C, 1 for Fortran.
1092 * \param Count Count of elements in the subrange.
1093 */
1095 int64_t LowerBound,
1096 int64_t Count);
1097
1098/**
1099 * Create an array of DI Nodes.
1100 * \param Builder The DIBuilder.
1101 * \param Data The DI Node elements.
1102 * \param NumElements Number of DI Node elements.
1103 */
1105 LLVMMetadataRef *Data,
1106 size_t NumElements);
1107
1108/**
1109 * Create a new descriptor for the specified variable which has a complex
1110 * address expression for its address.
1111 * \param Builder The DIBuilder.
1112 * \param Addr An array of complex address operations.
1113 * \param Length Length of the address operation array.
1114 */
1116 uint64_t *Addr, size_t Length);
1117
1118/**
1119 * Create a new descriptor for the specified variable that does not have an
1120 * address, but does have a constant value.
1121 * \param Builder The DIBuilder.
1122 * \param Value The constant value.
1123 */
1126 uint64_t Value);
1127
1128/**
1129 * Create a new descriptor for the specified variable.
1130 * \param Scope Variable scope.
1131 * \param Name Name of the variable.
1132 * \param NameLen The length of the C string passed to \c Name.
1133 * \param Linkage Mangled name of the variable.
1134 * \param LinkLen The length of the C string passed to \c Linkage.
1135 * \param File File where this variable is defined.
1136 * \param LineNo Line number.
1137 * \param Ty Variable Type.
1138 * \param LocalToUnit Boolean flag indicate whether this variable is
1139 * externally visible or not.
1140 * \param Expr The location of the global relative to the attached
1141 * GlobalVariable.
1142 * \param Decl Reference to the corresponding declaration.
1143 * variables.
1144 * \param AlignInBits Variable alignment(or 0 if no alignment attr was
1145 * specified)
1146 */
1148 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1149 size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File,
1150 unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
1151 LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits);
1152
1153
1154/**
1155 * Get the dwarf::Tag of a DINode
1156 */
1158
1159/**
1160 * Retrieves the \c DIVariable associated with this global variable expression.
1161 * \param GVE The global variable expression.
1162 *
1163 * @see llvm::DIGlobalVariableExpression::getVariable()
1164 */
1166
1167/**
1168 * Retrieves the \c DIExpression associated with this global variable expression.
1169 * \param GVE The global variable expression.
1170 *
1171 * @see llvm::DIGlobalVariableExpression::getExpression()
1172 */
1174 LLVMMetadataRef GVE);
1175
1176/**
1177 * Get the metadata of the file associated with a given variable.
1178 * \param Var The variable object.
1179 *
1180 * @see DIVariable::getFile()
1181 */
1183
1184/**
1185 * Get the metadata of the scope associated with a given variable.
1186 * \param Var The variable object.
1187 *
1188 * @see DIVariable::getScope()
1189 */
1191
1192/**
1193 * Get the source line where this \c DIVariable is declared.
1194 * \param Var The DIVariable.
1195 *
1196 * @see DIVariable::getLine()
1197 */
1199
1200/**
1201 * Create a new temporary \c MDNode. Suitable for use in constructing cyclic
1202 * \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd,
1203 * and must be manually deleted with \c LLVMDisposeTemporaryMDNode.
1204 * \param Ctx The context in which to construct the temporary node.
1205 * \param Data The metadata elements.
1206 * \param NumElements Number of metadata elements.
1207 */
1209 size_t NumElements);
1210
1211/**
1212 * Deallocate a temporary node.
1213 *
1214 * Calls \c replaceAllUsesWith(nullptr) before deleting, so any remaining
1215 * references will be reset.
1216 * \param TempNode The temporary metadata node.
1217 */
1219
1220/**
1221 * Replace all uses of temporary metadata.
1222 * \param TempTargetMetadata The temporary metadata node.
1223 * \param Replacement The replacement metadata node.
1224 */
1225void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata,
1226 LLVMMetadataRef Replacement);
1227
1228/**
1229 * Create a new descriptor for the specified global variable that is temporary
1230 * and meant to be RAUWed.
1231 * \param Scope Variable scope.
1232 * \param Name Name of the variable.
1233 * \param NameLen The length of the C string passed to \c Name.
1234 * \param Linkage Mangled name of the variable.
1235 * \param LnkLen The length of the C string passed to \c Linkage.
1236 * \param File File where this variable is defined.
1237 * \param LineNo Line number.
1238 * \param Ty Variable Type.
1239 * \param LocalToUnit Boolean flag indicate whether this variable is
1240 * externally visible or not.
1241 * \param Decl Reference to the corresponding declaration.
1242 * \param AlignInBits Variable alignment(or 0 if no alignment attr was
1243 * specified)
1244 */
1246 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1247 size_t NameLen, const char *Linkage, size_t LnkLen, LLVMMetadataRef File,
1248 unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
1249 LLVMMetadataRef Decl, uint32_t AlignInBits);
1250
1251/*
1252 * Insert a new Declare DbgRecord before the given instruction.
1253 *
1254 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1255 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1256 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1257 *
1258 * \param Builder The DIBuilder.
1259 * \param Storage The storage of the variable to declare.
1260 * \param VarInfo The variable's debug info descriptor.
1261 * \param Expr A complex location expression for the variable.
1262 * \param DebugLoc Debug info location.
1263 * \param Instr Instruction acting as a location for the new intrinsic.
1264 */
1267 LLVMMetadataRef VarInfo, LLVMMetadataRef Expr,
1268 LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1269/**
1270 * Soon to be deprecated.
1271 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1272 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1273 *
1274 * Insert a new llvm.dbg.declare intrinsic call before the given instruction.
1275 * \param Builder The DIBuilder.
1276 * \param Storage The storage of the variable to declare.
1277 * \param VarInfo The variable's debug info descriptor.
1278 * \param Expr A complex location expression for the variable.
1279 * \param DebugLoc Debug info location.
1280 * \param Instr Instruction acting as a location for the new intrinsic.
1281 */
1283 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1284 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1285/**
1286 * Soon to be deprecated.
1287 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1288 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1289 *
1290 * Insert a Declare DbgRecord before the given instruction.
1291 * \param Builder The DIBuilder.
1292 * \param Storage The storage of the variable to declare.
1293 * \param VarInfo The variable's debug info descriptor.
1294 * \param Expr A complex location expression for the variable.
1295 * \param DebugLoc Debug info location.
1296 * \param Instr Instruction acting as a location for the new record.
1297 */
1299 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1300 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1301
1302/**
1303 * Insert a new Declare DbgRecord at the end of the given basic block. If the
1304 * basic block has a terminator instruction, the intrinsic is inserted before
1305 * that terminator instruction.
1306 *
1307 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1308 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1309 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1310 *
1311 * \param Builder The DIBuilder.
1312 * \param Storage The storage of the variable to declare.
1313 * \param VarInfo The variable's debug info descriptor.
1314 * \param Expr A complex location expression for the variable.
1315 * \param DebugLoc Debug info location.
1316 * \param Block Basic block acting as a location for the new intrinsic.
1317 */
1319 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1320 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1321/**
1322 * Soon to be deprecated.
1323 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1324 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1325 *
1326 * Insert a new llvm.dbg.declare intrinsic call at the end of the given basic
1327 * block. If the basic block has a terminator instruction, the intrinsic is
1328 * inserted before that terminator instruction.
1329 * \param Builder The DIBuilder.
1330 * \param Storage The storage of the variable to declare.
1331 * \param VarInfo The variable's debug info descriptor.
1332 * \param Expr A complex location expression for the variable.
1333 * \param DebugLoc Debug info location.
1334 * \param Block Basic block acting as a location for the new intrinsic.
1335 */
1337 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1338 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1339/**
1340 * Soon to be deprecated.
1341 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1342 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1343 *
1344 * Insert a Declare DbgRecord at the end of the given basic block. If the basic
1345 * block has a terminator instruction, the record is inserted before that
1346 * terminator instruction.
1347 * \param Builder The DIBuilder.
1348 * \param Storage The storage of the variable to declare.
1349 * \param VarInfo The variable's debug info descriptor.
1350 * \param Expr A complex location expression for the variable.
1351 * \param DebugLoc Debug info location.
1352 * \param Block Basic block acting as a location for the new record.
1353 */
1355 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1356 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1357
1358/**
1359 * Insert a new Value DbgRecord before the given instruction.
1360 *
1361 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1362 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1363 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1364 *
1365 * \param Builder The DIBuilder.
1366 * \param Val The value of the variable.
1367 * \param VarInfo The variable's debug info descriptor.
1368 * \param Expr A complex location expression for the variable.
1369 * \param DebugLoc Debug info location.
1370 * \param Instr Instruction acting as a location for the new intrinsic.
1371 */
1374 LLVMMetadataRef VarInfo, LLVMMetadataRef Expr,
1375 LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1376/**
1377 * Soon to be deprecated.
1378 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1379 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1380 *
1381 * Insert a new llvm.dbg.value intrinsic call before the given instruction.
1382 * \param Builder The DIBuilder.
1383 * \param Val The value of the variable.
1384 * \param VarInfo The variable's debug info descriptor.
1385 * \param Expr A complex location expression for the variable.
1386 * \param DebugLoc Debug info location.
1387 * \param Instr Instruction acting as a location for the new intrinsic.
1388 */
1390 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1391 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1392/**
1393 * Soon to be deprecated.
1394 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1395 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1396 *
1397 * Insert a new llvm.dbg.value intrinsic call before the given instruction.
1398 * \param Builder The DIBuilder.
1399 * \param Val The value of the variable.
1400 * \param VarInfo The variable's debug info descriptor.
1401 * \param Expr A complex location expression for the variable.
1402 * \param DebugLoc Debug info location.
1403 * \param Instr Instruction acting as a location for the new intrinsic.
1404 */
1406 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1407 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1408
1409/**
1410 * Insert a new Value DbgRecord at the end of the given basic block. If the
1411 * basic block has a terminator instruction, the intrinsic is inserted before
1412 * that terminator instruction.
1413 *
1414 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1415 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1416 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1417 *
1418 * \param Builder The DIBuilder.
1419 * \param Val The value of the variable.
1420 * \param VarInfo The variable's debug info descriptor.
1421 * \param Expr A complex location expression for the variable.
1422 * \param DebugLoc Debug info location.
1423 * \param Block Basic block acting as a location for the new intrinsic.
1424 */
1426 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1427 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1428/**
1429 * Soon to be deprecated.
1430 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1431 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1432 *
1433 * Insert a new llvm.dbg.value intrinsic call at the end of the given basic
1434 * block. If the basic block has a terminator instruction, the intrinsic is
1435 * inserted before that terminator instruction.
1436 * \param Builder The DIBuilder.
1437 * \param Val The value of the variable.
1438 * \param VarInfo The variable's debug info descriptor.
1439 * \param Expr A complex location expression for the variable.
1440 * \param DebugLoc Debug info location.
1441 * \param Block Basic block acting as a location for the new intrinsic.
1442 */
1444 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1445 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1446/**
1447 * Soon to be deprecated.
1448 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1449 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1450 *
1451 * Insert a new llvm.dbg.value intrinsic call at the end of the given basic
1452 * block. If the basic block has a terminator instruction, the intrinsic is
1453 * inserted before that terminator instruction.
1454 * \param Builder The DIBuilder.
1455 * \param Val The value of the variable.
1456 * \param VarInfo The variable's debug info descriptor.
1457 * \param Expr A complex location expression for the variable.
1458 * \param DebugLoc Debug info location.
1459 * \param Block Basic block acting as a location for the new intrinsic.
1460 */
1462 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1463 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1464
1465/**
1466 * Create a new descriptor for a local auto variable.
1467 * \param Builder The DIBuilder.
1468 * \param Scope The local scope the variable is declared in.
1469 * \param Name Variable name.
1470 * \param NameLen Length of variable name.
1471 * \param File File where this variable is defined.
1472 * \param LineNo Line number.
1473 * \param Ty Metadata describing the type of the variable.
1474 * \param AlwaysPreserve If true, this descriptor will survive optimizations.
1475 * \param Flags Flags.
1476 * \param AlignInBits Variable alignment.
1477 */
1479 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1480 size_t NameLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
1481 LLVMBool AlwaysPreserve, LLVMDIFlags Flags, uint32_t AlignInBits);
1482
1483/**
1484 * Create a new descriptor for a function parameter variable.
1485 * \param Builder The DIBuilder.
1486 * \param Scope The local scope the variable is declared in.
1487 * \param Name Variable name.
1488 * \param NameLen Length of variable name.
1489 * \param ArgNo Unique argument number for this variable; starts at 1.
1490 * \param File File where this variable is defined.
1491 * \param LineNo Line number.
1492 * \param Ty Metadata describing the type of the variable.
1493 * \param AlwaysPreserve If true, this descriptor will survive optimizations.
1494 * \param Flags Flags.
1495 */
1497 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1498 size_t NameLen, unsigned ArgNo, LLVMMetadataRef File, unsigned LineNo,
1499 LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags);
1500
1501/**
1502 * Get the metadata of the subprogram attached to a function.
1503 *
1504 * @see llvm::Function::getSubprogram()
1505 */
1507
1508/**
1509 * Set the subprogram attached to a function.
1510 *
1511 * @see llvm::Function::setSubprogram()
1512 */
1514
1515/**
1516 * Get the line associated with a given subprogram.
1517 * \param Subprogram The subprogram object.
1518 *
1519 * @see DISubprogram::getLine()
1520 */
1521unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram);
1522
1523/**
1524 * Get the debug location for the given instruction.
1525 *
1526 * @see llvm::Instruction::getDebugLoc()
1527 */
1529
1530/**
1531 * Set the debug location for the given instruction.
1532 *
1533 * To clear the location metadata of the given instruction, pass NULL to \p Loc.
1534 *
1535 * @see llvm::Instruction::setDebugLoc()
1536 */
1538
1539/**
1540 * Obtain the enumerated type of a Metadata instance.
1541 *
1542 * @see llvm::Metadata::getMetadataID()
1543 */
1545
1546/**
1547 * @}
1548 */
1549
1551
1552#endif
RelocType Type
Definition: COFFYAML.cpp:391
uint64_t Addr
std::string Name
uint64_t Size
#define LLVM_C_EXTERN_C_BEGIN
Definition: ExternC.h:35
#define LLVM_C_EXTERN_C_END
Definition: ExternC.h:36
Machine Check Debug Module
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 instance variable.
Definition: DebugInfo.cpp:1394
LLVMMetadataRef LLVMDILocationGetInlinedAt(LLVMMetadataRef Location)
Get the "inline at" location associated with this debug location.
Definition: DebugInfo.cpp:1225
LLVMDbgRecordRef LLVMDIBuilderInsertDeclareBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Definition: DebugInfo.cpp:1669
LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Builder, LLVMMetadataRef *Data, size_t NumElements)
Create an array of DI Nodes.
Definition: DebugInfo.cpp:1845
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 an enumeration.
Definition: DebugInfo.cpp:1282
LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromModule(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef M, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef *Elements, unsigned NumElements)
Create a descriptor for an imported module.
Definition: DebugInfo.cpp:1179
LLVMMetadataRef LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder, LLVMMetadataRef Type)
Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set.
Definition: DebugInfo.cpp:1422
uint64_t LLVMDITypeGetSizeInBits(LLVMMetadataRef DType)
Get the size of this DIType in bits.
Definition: DebugInfo.cpp:1556
LLVMDWARFMacinfoRecordType
Describes the kind of macro declaration used for LLVMDIBuilderCreateMacro.
Definition: DebugInfo.h:197
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 new descriptor for the specified subprogram.
Definition: DebugInfo.cpp:1121
LLVMDbgRecordRef LLVMDIBuilderInsertDeclareRecordAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Soon to be deprecated.
Definition: DebugInfo.cpp:1730
LLVMDbgRecordRef LLVMDIBuilderInsertDbgValueBefore(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Insert a new Value DbgRecord before the given instruction.
Definition: DebugInfo.cpp:1746
LLVMDbgRecordRef LLVMDIBuilderInsertDbgValueAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Insert a new Value DbgRecord at the end of the given basic block.
Definition: DebugInfo.cpp:1783
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 bit field member.
Definition: DebugInfo.cpp:1506
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE)
Retrieves the DIVariable associated with this global variable expression.
Definition: DebugInfo.cpp:1619
LLVMMetadataRef LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder, LLVMMetadataRef Type)
Create a uniqued DIType* clone with FlagArtificial set.
Definition: DebugInfo.cpp:1541
void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder)
Construct any deferred debug info descriptors.
Definition: DebugInfo.cpp:1063
LLVMMetadataRef LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Discriminator)
Create a descriptor for a lexical block with a new file attached.
Definition: DebugInfo.cpp:1145
unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram)
Get the line associated with a given subprogram.
Definition: DebugInfo.cpp:1860
LLVMMetadataRef LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name, size_t NameLen)
Create a DWARF unspecified type.
Definition: DebugInfo.cpp:1377
LLVMMetadataRef LLVMDIBuilderCreateNameSpace(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentScope, const char *Name, size_t NameLen, LLVMBool ExportSymbols)
Creates a new descriptor for a namespace with the specified parent scope.
Definition: DebugInfo.cpp:1113
LLVMMetadataRef LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line, unsigned Column, LLVMMetadataRef Scope, LLVMMetadataRef InlinedAt)
Creates a new DebugLocation that describes a source location.
Definition: DebugInfo.cpp:1206
uint32_t LLVMDITypeGetAlignInBits(LLVMMetadataRef DType)
Get the alignment of this DIType in bits.
Definition: DebugInfo.cpp:1564
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetExpression(LLVMMetadataRef GVE)
Retrieves the DIExpression associated with this global variable expression.
Definition: DebugInfo.cpp:1623
LLVMMetadataRef LLVMDIVariableGetScope(LLVMMetadataRef Var)
Get the metadata of the scope associated with a given variable.
Definition: DebugInfo.cpp:1632
LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst)
Get the debug location for the given instruction.
Definition: DebugInfo.cpp:1864
LLVMMetadataRef LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag, LLVMMetadataRef Type)
Create debugging information entry for a c++ style reference or rvalue reference type.
Definition: DebugInfo.cpp:1481
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 *APINotesFile, size_t APINotesFileLen)
Creates a new descriptor for a module with the specified parent scope.
Definition: DebugInfo.cpp:1101
LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M)
Construct a builder for a module, and do not allow for unresolved nodes attached to the module.
Definition: DebugInfo.cpp:1043
void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP)
Set the subprogram attached to a function.
Definition: DebugInfo.cpp:1856
LLVMDWARFSourceLanguage
Source languages known by DWARF.
Definition: DebugInfo.h:78
LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Builder, int64_t LowerBound, int64_t Count)
Create a descriptor for a value range.
Definition: DebugInfo.cpp:1840
LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M)
Construct a builder for a module and collect unresolved nodes attached to the module in order to reso...
Definition: DebugInfo.cpp:1047
void LLVMDisposeTemporaryMDNode(LLVMMetadataRef TempNode)
Deallocate a temporary node.
Definition: DebugInfo.cpp:1646
LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location)
Get the local scope associated with this debug location.
Definition: DebugInfo.cpp:1221
LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromNamespace(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef NS, LLVMMetadataRef File, unsigned Line)
Create a descriptor for an imported namespace.
Definition: DebugInfo.cpp:1155
LLVMMetadataRef LLVMDIBuilderCreateTempMacroFile(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentMacroFile, unsigned Line, LLVMMetadataRef File)
Create debugging information temporary entry for a macro file.
Definition: DebugInfo.cpp:1267
void LLVMInstructionSetDebugLoc(LLVMValueRef Inst, LLVMMetadataRef Loc)
Set the debug location for the given instruction.
Definition: DebugInfo.cpp:1868
LLVMMetadataRef LLVMDIBuilderCreateEnumerator(LLVMDIBuilderRef Builder, const char *Name, size_t NameLen, int64_t Value, LLVMBool IsUnsigned)
Create debugging information entry for an enumerator.
Definition: DebugInfo.cpp:1274
LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Builder, uint64_t *Addr, size_t Length)
Create a new descriptor for the specified variable which has a complex address expression for its add...
Definition: DebugInfo.cpp:1595
LLVMMetadataRef LLVMDIBuilderCreateVectorType(LLVMDIBuilderRef Builder, uint64_t Size, uint32_t AlignInBits, LLVMMetadataRef Ty, LLVMMetadataRef *Subscripts, unsigned NumSubscripts)
Create debugging information entry for a vector type.
Definition: DebugInfo.cpp:1321
LLVMMetadataRef LLVMDIBuilderCreateMemberPointerType(LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeType, LLVMMetadataRef ClassType, uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags)
Create debugging information entry for a pointer to member.
Definition: DebugInfo.cpp:1493
LLVMValueRef LLVMDIBuilderInsertDeclareIntrinsicBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1675
unsigned LLVMDILocationGetColumn(LLVMMetadataRef Location)
Get the column number of this debug location.
Definition: DebugInfo.cpp:1217
LLVMDIFlags
Debug info flags.
Definition: DebugInfo.h:34
LLVMValueRef LLVMDIBuilderInsertDbgValueIntrinsicAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Soon to be deprecated.
Definition: DebugInfo.cpp:1789
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 local auto variable.
Definition: DebugInfo.cpp:1820
LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data, size_t NumElements)
Create a new temporary MDNode.
Definition: DebugInfo.cpp:1640
LLVMDIFlags LLVMDITypeGetFlags(LLVMMetadataRef DType)
Get the flags associated with this DIType.
Definition: DebugInfo.cpp:1572
const char * LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len)
Get the directory of a given file.
Definition: DebugInfo.cpp:1233
void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata, LLVMMetadataRef Replacement)
Replace all uses of temporary metadata.
Definition: DebugInfo.cpp:1650
const char * LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len)
Get the name of a given file.
Definition: DebugInfo.cpp:1239
unsigned LLVMDebugMetadataVersion(void)
The current debug metadata version number.
Definition: DebugInfo.cpp:1039
unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module)
The version of debug metadata that's present in the provided Module.
Definition: DebugInfo.cpp:1051
unsigned LLVMDITypeGetLine(LLVMMetadataRef DType)
Get the source line where this DIType is declared.
Definition: DebugInfo.cpp:1568
LLVMMetadataRef LLVMDIVariableGetFile(LLVMMetadataRef Var)
Get the metadata of the file associated with a given variable.
Definition: DebugInfo.cpp:1628
LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromAlias(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef ImportedEntity, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef *Elements, unsigned NumElements)
Create a descriptor for an imported module that aliases another imported entity descriptor.
Definition: DebugInfo.cpp:1166
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 C++ static data member.
Definition: DebugInfo.cpp:1382
uint16_t LLVMGetDINodeTag(LLVMMetadataRef MD)
Get the dwarf::Tag of a DINode.
Definition: DebugInfo.cpp:1546
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 descriptor for the specified variable.
Definition: DebugInfo.cpp:1607
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)
Create a new descriptor for the specified global variable that is temporary and meant to be RAUWed.
Definition: DebugInfo.cpp:1657
LLVMMetadataRef LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag, LLVMMetadataRef Type)
Create debugging information entry for a qualified type, e.g.
Definition: DebugInfo.cpp:1474
LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata)
Obtain the enumerated type of a Metadata instance.
Definition: DebugInfo.cpp:1875
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 a union.
Definition: DebugInfo.cpp:1294
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 permanent forward-declared type.
Definition: DebugInfo.cpp:1448
LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, size_t NameLen, unsigned ArgNo, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags)
Create a new descriptor for a function parameter variable.
Definition: DebugInfo.cpp:1830
LLVMMetadataRef LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder, LLVMMetadataRef File, LLVMMetadataRef *ParameterTypes, unsigned NumParameterTypes, LLVMDIFlags Flags)
Create subroutine type.
Definition: DebugInfo.cpp:1584
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 debugging information entry for Objective-C property.
Definition: DebugInfo.cpp:1408
LLVMMetadataRef LLVMDIBuilderCreateMacro(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentMacroFile, unsigned Line, LLVMDWARFMacinfoRecordType RecordType, const char *Name, size_t NameLen, const char *Value, size_t ValueLen)
Create debugging information entry for a macro.
Definition: DebugInfo.cpp:1254
LLVMDWARFEmissionKind
The amount of debug information to emit.
Definition: DebugInfo.h:138
LLVMValueRef LLVMDIBuilderInsertDeclareIntrinsicAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Soon to be deprecated.
Definition: DebugInfo.cpp:1715
LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Builder, uint64_t Size, uint32_t AlignInBits, LLVMMetadataRef Ty, LLVMMetadataRef *Subscripts, unsigned NumSubscripts)
Create debugging information entry for an array.
Definition: DebugInfo.cpp:1310
LLVMDbgRecordRef LLVMDIBuilderInsertDbgValueRecordAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Soon to be deprecated.
Definition: DebugInfo.cpp:1804
LLVMMetadataRef LLVMDIScopeGetFile(LLVMMetadataRef Scope)
Get the metadata of the file associated with a given scope.
Definition: DebugInfo.cpp:1229
void LLVMDIBuilderFinalizeSubprogram(LLVMDIBuilderRef Builder, LLVMMetadataRef Subprogram)
Finalize a specific subprogram.
Definition: DebugInfo.cpp:1067
LLVMMetadataRef LLVMDIBuilderCreateConstantValueExpression(LLVMDIBuilderRef Builder, uint64_t Value)
Create a new descriptor for the specified variable that does not have an address, but does have a con...
Definition: DebugInfo.cpp:1602
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 debugging information entry for a class.
Definition: DebugInfo.cpp:1521
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 member.
Definition: DebugInfo.cpp:1366
unsigned LLVMDILocationGetLine(LLVMMetadataRef Location)
Get the line number of this debug location.
Definition: DebugInfo.cpp:1213
LLVMMetadataRef LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder)
Create C++11 nullptr type.
Definition: DebugInfo.cpp:1488
LLVMMetadataRef LLVMDIBuilderCreateInheritance(LLVMDIBuilderRef Builder, LLVMMetadataRef Ty, LLVMMetadataRef BaseTy, uint64_t BaseOffset, uint32_t VBPtrOffset, LLVMDIFlags Flags)
Create debugging information entry to establish inheritance relationship between two types.
Definition: DebugInfo.cpp:1438
LLVMDbgRecordRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Insert a new Declare DbgRecord at the end of the given basic block.
Definition: DebugInfo.cpp:1709
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, const char *SysRoot, size_t SysRootLen, const char *SDK, size_t SDKLen)
A CompileUnit provides an anchor for all debugging information generated during this instance of comp...
Definition: DebugInfo.cpp:1072
LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module)
Strip debug info in the module if it exists.
Definition: DebugInfo.cpp:1055
LLVMDbgRecordRef LLVMDIBuilderInsertDeclareRecordBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1691
LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const char *Name, size_t NameLen, uint64_t SizeInBits, LLVMDWARFTypeEncoding Encoding, LLVMDIFlags Flags)
Create debugging information entry for a basic type.
Definition: DebugInfo.cpp:1332
unsigned LLVMDIVariableGetLine(LLVMMetadataRef Var)
Get the source line where this DIVariable is declared.
Definition: DebugInfo.cpp:1636
LLVMDbgRecordRef LLVMDIBuilderInsertDbgValueRecordBefore(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1767
unsigned LLVMDWARFTypeEncoding
An LLVM DWARF type encoding.
Definition: DebugInfo.h:190
LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line, unsigned Column)
Create a descriptor for a lexical block with the specified parent context.
Definition: DebugInfo.cpp:1136
LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Builder, LLVMMetadataRef *Data, size_t NumElements)
Create a type array.
Definition: DebugInfo.cpp:1576
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 a temporary forward-declared type.
Definition: DebugInfo.cpp:1460
LLVMValueRef LLVMDIBuilderInsertDbgValueIntrinsicBefore(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1752
const char * LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len)
Get the source of a given file.
Definition: DebugInfo.cpp:1245
uint64_t LLVMDITypeGetOffsetInBits(LLVMMetadataRef DType)
Get the offset of this DIType in bits.
Definition: DebugInfo.cpp:1560
LLVMMetadataRef LLVMDIBuilderCreateImportedDeclaration(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef Decl, LLVMMetadataRef File, unsigned Line, const char *Name, size_t NameLen, LLVMMetadataRef *Elements, unsigned NumElements)
Create a descriptor for an imported function, type, or variable.
Definition: DebugInfo.cpp:1192
LLVMMetadataRef LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename, size_t FilenameLen, const char *Directory, size_t DirectoryLen)
Create a file descriptor to hold debugging information for a file.
Definition: DebugInfo.cpp:1093
const char * LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length)
Get the name of this DIType.
Definition: DebugInfo.cpp:1550
unsigned LLVMMetadataKind
Definition: DebugInfo.h:185
LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Builder, LLVMMetadataRef Type, const char *Name, size_t NameLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Scope, uint32_t AlignInBits)
Create debugging information entry for a typedef.
Definition: DebugInfo.cpp:1428
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 struct.
Definition: DebugInfo.cpp:1350
void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder)
Deallocates the DIBuilder and everything it owns.
Definition: DebugInfo.cpp:1059
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 pointer.
Definition: DebugInfo.cpp:1341
LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func)
Get the metadata of the subprogram attached to a function.
Definition: DebugInfo.cpp:1852
@ LLVMDWARFMacinfoRecordTypeStartFile
Definition: DebugInfo.h:200
@ LLVMDWARFMacinfoRecordTypeVendorExt
Definition: DebugInfo.h:202
@ LLVMDWARFMacinfoRecordTypeEndFile
Definition: DebugInfo.h:201
@ LLVMDWARFMacinfoRecordTypeMacro
Definition: DebugInfo.h:199
@ LLVMDWARFMacinfoRecordTypeDefine
Definition: DebugInfo.h:198
@ LLVMDWARFSourceLanguageBLISS
Definition: DebugInfo.h:118
@ LLVMDWARFSourceLanguageJava
Definition: DebugInfo.h:90
@ LLVMDWARFSourceLanguageGOOGLE_RenderScript
Definition: DebugInfo.h:131
@ LLVMDWARFSourceLanguageSwift
Definition: DebugInfo.h:111
@ LLVMDWARFSourceLanguageCobol74
Definition: DebugInfo.h:83
@ LLVMDWARFSourceLanguageUPC
Definition: DebugInfo.h:97
@ LLVMDWARFSourceLanguageFortran03
Definition: DebugInfo.h:115
@ LLVMDWARFSourceLanguageAda2005
Definition: DebugInfo.h:126
@ LLVMDWARFSourceLanguageDylan
Definition: DebugInfo.h:113
@ LLVMDWARFSourceLanguageC_plus_plus_17
Definition: DebugInfo.h:122
@ LLVMDWARFSourceLanguageC_plus_plus_14
Definition: DebugInfo.h:114
@ LLVMDWARFSourceLanguageC
Definition: DebugInfo.h:80
@ LLVMDWARFSourceLanguageC_plus_plus_20
Definition: DebugInfo.h:123
@ LLVMDWARFSourceLanguageAda95
Definition: DebugInfo.h:92
@ LLVMDWARFSourceLanguageD
Definition: DebugInfo.h:98
@ LLVMDWARFSourceLanguageAda2012
Definition: DebugInfo.h:127
@ LLVMDWARFSourceLanguageCobol85
Definition: DebugInfo.h:84
@ LLVMDWARFSourceLanguageKotlin
Definition: DebugInfo.h:119
@ LLVMDWARFSourceLanguageModula2
Definition: DebugInfo.h:88
@ LLVMDWARFSourceLanguageC_plus_plus
Definition: DebugInfo.h:82
@ LLVMDWARFSourceLanguageC99
Definition: DebugInfo.h:91
@ LLVMDWARFSourceLanguageMojo
Definition: DebugInfo.h:128
@ LLVMDWARFSourceLanguageOpenCL
Definition: DebugInfo.h:102
@ LLVMDWARFSourceLanguageRust
Definition: DebugInfo.h:109
@ LLVMDWARFSourceLanguageFortran90
Definition: DebugInfo.h:86
@ LLVMDWARFSourceLanguageJulia
Definition: DebugInfo.h:112
@ LLVMDWARFSourceLanguageModula3
Definition: DebugInfo.h:104
@ LLVMDWARFSourceLanguageGo
Definition: DebugInfo.h:103
@ LLVMDWARFSourceLanguageObjC
Definition: DebugInfo.h:95
@ LLVMDWARFSourceLanguageBORLAND_Delphi
Definition: DebugInfo.h:132
@ LLVMDWARFSourceLanguageFortran77
Definition: DebugInfo.h:85
@ LLVMDWARFSourceLanguageMips_Assembler
Definition: DebugInfo.h:130
@ LLVMDWARFSourceLanguageObjC_plus_plus
Definition: DebugInfo.h:96
@ LLVMDWARFSourceLanguageFortran08
Definition: DebugInfo.h:116
@ LLVMDWARFSourceLanguagePascal83
Definition: DebugInfo.h:87
@ LLVMDWARFSourceLanguagePLI
Definition: DebugInfo.h:94
@ LLVMDWARFSourceLanguageC17
Definition: DebugInfo.h:124
@ LLVMDWARFSourceLanguageC11
Definition: DebugInfo.h:110
@ LLVMDWARFSourceLanguageFortran95
Definition: DebugInfo.h:93
@ LLVMDWARFSourceLanguageC_plus_plus_03
Definition: DebugInfo.h:106
@ LLVMDWARFSourceLanguageFortran18
Definition: DebugInfo.h:125
@ LLVMDWARFSourceLanguageC89
Definition: DebugInfo.h:79
@ LLVMDWARFSourceLanguagePython
Definition: DebugInfo.h:100
@ LLVMDWARFSourceLanguageRenderScript
Definition: DebugInfo.h:117
@ LLVMDWARFSourceLanguageCrystal
Definition: DebugInfo.h:121
@ LLVMDWARFSourceLanguageOCaml
Definition: DebugInfo.h:108
@ LLVMDWARFSourceLanguageZig
Definition: DebugInfo.h:120
@ LLVMDWARFSourceLanguageHaskell
Definition: DebugInfo.h:105
@ LLVMDWARFSourceLanguageC_plus_plus_11
Definition: DebugInfo.h:107
@ LLVMDWARFSourceLanguageAda83
Definition: DebugInfo.h:81
@ LLVMDIFlagBigEndian
Definition: DebugInfo.h:65
@ LLVMDIFlagPrivate
Definition: DebugInfo.h:36
@ LLVMDIFlagPrototyped
Definition: DebugInfo.h:45
@ LLVMDIFlagBitField
Definition: DebugInfo.h:57
@ LLVMDIFlagObjcClassComplete
Definition: DebugInfo.h:46
@ LLVMDIFlagAccessibility
Definition: DebugInfo.h:68
@ LLVMDIFlagRValueReference
Definition: DebugInfo.h:51
@ LLVMDIFlagProtected
Definition: DebugInfo.h:37
@ LLVMDIFlagIntroducedVirtual
Definition: DebugInfo.h:56
@ LLVMDIFlagAppleBlock
Definition: DebugInfo.h:40
@ LLVMDIFlagTypePassByReference
Definition: DebugInfo.h:60
@ LLVMDIFlagFixedEnum
Definition: DebugInfo.h:62
@ LLVMDIFlagNoReturn
Definition: DebugInfo.h:58
@ LLVMDIFlagExplicit
Definition: DebugInfo.h:44
@ LLVMDIFlagMultipleInheritance
Definition: DebugInfo.h:54
@ LLVMDIFlagThunk
Definition: DebugInfo.h:63
@ LLVMDIFlagIndirectVirtualBase
Definition: DebugInfo.h:67
@ LLVMDIFlagLittleEndian
Definition: DebugInfo.h:66
@ LLVMDIFlagReservedBit4
Definition: DebugInfo.h:41
@ LLVMDIFlagArtificial
Definition: DebugInfo.h:43
@ LLVMDIFlagPublic
Definition: DebugInfo.h:38
@ LLVMDIFlagStaticMember
Definition: DebugInfo.h:49
@ LLVMDIFlagVector
Definition: DebugInfo.h:48
@ LLVMDIFlagPtrToMemberRep
Definition: DebugInfo.h:70
@ LLVMDIFlagVirtual
Definition: DebugInfo.h:42
@ LLVMDIFlagSingleInheritance
Definition: DebugInfo.h:53
@ LLVMDIFlagVirtualInheritance
Definition: DebugInfo.h:55
@ LLVMDIFlagReserved
Definition: DebugInfo.h:52
@ LLVMDIFlagTypePassByValue
Definition: DebugInfo.h:59
@ LLVMDIFlagEnumClass
Definition: DebugInfo.h:61
@ LLVMDIFlagFwdDecl
Definition: DebugInfo.h:39
@ LLVMDIFlagLValueReference
Definition: DebugInfo.h:50
@ LLVMDIFlagObjectPointer
Definition: DebugInfo.h:47
@ LLVMDIFlagNonTrivial
Definition: DebugInfo.h:64
@ LLVMDIFlagZero
Definition: DebugInfo.h:35
@ LLVMGenericDINodeMetadataKind
Definition: DebugInfo.h:156
@ LLVMDIDerivedTypeMetadataKind
Definition: DebugInfo.h:160
@ LLVMDIMacroMetadataKind
Definition: DebugInfo.h:177
@ LLVMDILexicalBlockMetadataKind
Definition: DebugInfo.h:166
@ LLVMMDTupleMetadataKind
Definition: DebugInfo.h:152
@ LLVMDIExpressionMetadataKind
Definition: DebugInfo.h:154
@ LLVMDIGlobalVariableExpressionMetadataKind
Definition: DebugInfo.h:155
@ LLVMLocalAsMetadataMetadataKind
Definition: DebugInfo.h:150
@ LLVMDILocalVariableMetadataKind
Definition: DebugInfo.h:173
@ LLVMDILocationMetadataKind
Definition: DebugInfo.h:153
@ LLVMDistinctMDOperandPlaceholderMetadataKind
Definition: DebugInfo.h:151
@ LLVMDILexicalBlockFileMetadataKind
Definition: DebugInfo.h:167
@ LLVMDIMacroFileMetadataKind
Definition: DebugInfo.h:178
@ LLVMDIArgListMetadataKind
Definition: DebugInfo.h:182
@ LLVMDITemplateTypeParameterMetadataKind
Definition: DebugInfo.h:170
@ LLVMDIImportedEntityMetadataKind
Definition: DebugInfo.h:176
@ LLVMDIGlobalVariableMetadataKind
Definition: DebugInfo.h:172
@ LLVMDIAssignIDMetadataKind
Definition: DebugInfo.h:183
@ LLVMDISubrangeMetadataKind
Definition: DebugInfo.h:157
@ LLVMDITemplateValueParameterMetadataKind
Definition: DebugInfo.h:171
@ LLVMDIObjCPropertyMetadataKind
Definition: DebugInfo.h:175
@ LLVMDINamespaceMetadataKind
Definition: DebugInfo.h:168
@ LLVMDIGenericSubrangeMetadataKind
Definition: DebugInfo.h:181
@ LLVMDICompileUnitMetadataKind
Definition: DebugInfo.h:164
@ LLVMDICompositeTypeMetadataKind
Definition: DebugInfo.h:161
@ LLVMMDStringMetadataKind
Definition: DebugInfo.h:148
@ LLVMDIEnumeratorMetadataKind
Definition: DebugInfo.h:158
@ LLVMDIFileMetadataKind
Definition: DebugInfo.h:163
@ LLVMDIModuleMetadataKind
Definition: DebugInfo.h:169
@ LLVMDIBasicTypeMetadataKind
Definition: DebugInfo.h:159
@ LLVMConstantAsMetadataMetadataKind
Definition: DebugInfo.h:149
@ LLVMDIStringTypeMetadataKind
Definition: DebugInfo.h:180
@ LLVMDICommonBlockMetadataKind
Definition: DebugInfo.h:179
@ LLVMDILabelMetadataKind
Definition: DebugInfo.h:174
@ LLVMDISubprogramMetadataKind
Definition: DebugInfo.h:165
@ LLVMDISubroutineTypeMetadataKind
Definition: DebugInfo.h:162
@ LLVMDWARFEmissionLineTablesOnly
Definition: DebugInfo.h:141
@ LLVMDWARFEmissionFull
Definition: DebugInfo.h:140
@ LLVMDWARFEmissionNone
Definition: DebugInfo.h:139
struct LLVMOpaqueValue * LLVMValueRef
Represents an individual value in LLVM IR.
Definition: Types.h:75
int LLVMBool
Definition: Types.h:28
struct LLVMOpaqueDbgRecord * LLVMDbgRecordRef
Definition: Types.h:175
struct LLVMOpaqueContext * LLVMContextRef
The top-level container for all LLVM global data.
Definition: Types.h:53
struct LLVMOpaqueBasicBlock * LLVMBasicBlockRef
Represents a basic block of instructions in LLVM IR.
Definition: Types.h:82
struct LLVMOpaqueMetadata * LLVMMetadataRef
Represents an LLVM Metadata.
Definition: Types.h:89
struct LLVMOpaqueModule * LLVMModuleRef
The top-level container for all other LLVM Intermediate Representation (IR) objects.
Definition: Types.h:61
struct LLVMOpaqueDIBuilder * LLVMDIBuilderRef
Represents an LLVM debug info builder.
Definition: Types.h:117
Helper object to track which of three possible relocation mechanisms are used for a particular value ...