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