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:
141
142 // Vendor extensions:
147
148/**
149 * The amount of debug information to emit.
150 */
151typedef enum {
156
157/**
158 * The kind of metadata nodes.
159 */
160enum {
197};
198typedef unsigned LLVMMetadataKind;
199
200/**
201 * An LLVM DWARF type encoding.
202 */
203typedef unsigned LLVMDWARFTypeEncoding;
204
205/**
206 * Describes the kind of macro declaration used for LLVMDIBuilderCreateMacro.
207 * @see llvm::dwarf::MacinfoRecordType
208 * @note Values are from DW_MACINFO_* constants in the DWARF specification.
209 */
210typedef enum {
217
218/**
219 * The current debug metadata version number.
220 */
221unsigned LLVMDebugMetadataVersion(void);
222
223/**
224 * The version of debug metadata that's present in the provided \c Module.
225 */
227
228/**
229 * Strip debug info in the module if it exists.
230 * To do this, we remove all calls to the debugger intrinsics and any named
231 * metadata for debugging. We also remove debug locations for instructions.
232 * Return true if module is modified.
233 */
235
236/**
237 * Construct a builder for a module, and do not allow for unresolved nodes
238 * attached to the module.
239 */
241
242/**
243 * Construct a builder for a module and collect unresolved nodes attached
244 * to the module in order to resolve cycles during a call to
245 * \c LLVMDIBuilderFinalize.
246 */
248
249/**
250 * Deallocates the \c DIBuilder and everything it owns.
251 * @note You must call \c LLVMDIBuilderFinalize before this
252 */
254
255/**
256 * Construct any deferred debug info descriptors.
257 */
259
260/**
261 * Finalize a specific subprogram.
262 * No new variables may be added to this subprogram afterwards.
263 */
265 LLVMMetadataRef Subprogram);
266
267/**
268 * A CompileUnit provides an anchor for all debugging
269 * information generated during this instance of compilation.
270 * \param Lang Source programming language, eg.
271 * \c LLVMDWARFSourceLanguageC99
272 * \param FileRef File info.
273 * \param Producer Identify the producer of debugging information
274 * and code. Usually this is a compiler
275 * version string.
276 * \param ProducerLen The length of the C string passed to \c Producer.
277 * \param isOptimized A boolean flag which indicates whether optimization
278 * is enabled or not.
279 * \param Flags This string lists command line options. This
280 * string is directly embedded in debug info
281 * output which may be used by a tool
282 * analyzing generated debugging information.
283 * \param FlagsLen The length of the C string passed to \c Flags.
284 * \param RuntimeVer This indicates runtime version for languages like
285 * Objective-C.
286 * \param SplitName The name of the file that we'll split debug info
287 * out into.
288 * \param SplitNameLen The length of the C string passed to \c SplitName.
289 * \param Kind The kind of debug information to generate.
290 * \param DWOId The DWOId if this is a split skeleton compile unit.
291 * \param SplitDebugInlining Whether to emit inline debug info.
292 * \param DebugInfoForProfiling Whether to emit extra debug info for
293 * profile collection.
294 * \param SysRoot The Clang system root (value of -isysroot).
295 * \param SysRootLen The length of the C string passed to \c SysRoot.
296 * \param SDK The SDK. On Darwin, the last component of the sysroot.
297 * \param SDKLen The length of the C string passed to \c SDK.
298 */
301 LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,
302 LLVMBool isOptimized, const char *Flags, size_t FlagsLen,
303 unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen,
304 LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining,
305 LLVMBool DebugInfoForProfiling, const char *SysRoot, size_t SysRootLen,
306 const char *SDK, size_t SDKLen);
307
308/**
309 * Create a file descriptor to hold debugging information for a file.
310 * \param Builder The \c DIBuilder.
311 * \param Filename File name.
312 * \param FilenameLen The length of the C string passed to \c Filename.
313 * \param Directory Directory.
314 * \param DirectoryLen The length of the C string passed to \c Directory.
315 */
317LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
318 size_t FilenameLen, const char *Directory,
319 size_t DirectoryLen);
320
321/**
322 * Creates a new descriptor for a module with the specified parent scope.
323 * \param Builder The \c DIBuilder.
324 * \param ParentScope The parent scope containing this module declaration.
325 * \param Name Module name.
326 * \param NameLen The length of the C string passed to \c Name.
327 * \param ConfigMacros A space-separated shell-quoted list of -D macro
328 definitions as they would appear on a command line.
329 * \param ConfigMacrosLen The length of the C string passed to \c ConfigMacros.
330 * \param IncludePath The path to the module map file.
331 * \param IncludePathLen The length of the C string passed to \c IncludePath.
332 * \param APINotesFile The path to an API notes file for the module.
333 * \param APINotesFileLen The length of the C string passed to \c APINotestFile.
334 */
337 const char *Name, size_t NameLen,
338 const char *ConfigMacros, size_t ConfigMacrosLen,
339 const char *IncludePath, size_t IncludePathLen,
340 const char *APINotesFile, size_t APINotesFileLen);
341
342/**
343 * Creates a new descriptor for a namespace with the specified parent scope.
344 * \param Builder The \c DIBuilder.
345 * \param ParentScope The parent scope containing this module declaration.
346 * \param Name NameSpace name.
347 * \param NameLen The length of the C string passed to \c Name.
348 * \param ExportSymbols Whether or not the namespace exports symbols, e.g.
349 * this is true of C++ inline namespaces.
350 */
353 LLVMMetadataRef ParentScope,
354 const char *Name, size_t NameLen,
355 LLVMBool ExportSymbols);
356
357/**
358 * Create a new descriptor for the specified subprogram.
359 * \param Builder The \c DIBuilder.
360 * \param Scope Function scope.
361 * \param Name Function name.
362 * \param NameLen Length of enumeration name.
363 * \param LinkageName Mangled function name.
364 * \param LinkageNameLen Length of linkage name.
365 * \param File File where this variable is defined.
366 * \param LineNo Line number.
367 * \param Ty Function type.
368 * \param IsLocalToUnit True if this function is not externally visible.
369 * \param IsDefinition True if this is a function definition.
370 * \param ScopeLine Set to the beginning of the scope this starts
371 * \param Flags E.g.: \c LLVMDIFlagLValueReference. These flags are
372 * used to emit dwarf attributes.
373 * \param IsOptimized True if optimization is ON.
374 */
376 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
377 size_t NameLen, const char *LinkageName, size_t LinkageNameLen,
378 LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
379 LLVMBool IsLocalToUnit, LLVMBool IsDefinition,
380 unsigned ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized);
381
382/**
383 * Create a descriptor for a lexical block with the specified parent context.
384 * \param Builder The \c DIBuilder.
385 * \param Scope Parent lexical block.
386 * \param File Source file.
387 * \param Line The line in the source file.
388 * \param Column The column in the source file.
389 */
391 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope,
392 LLVMMetadataRef File, unsigned Line, unsigned Column);
393
394/**
395 * Create a descriptor for a lexical block with a new file attached.
396 * \param Builder The \c DIBuilder.
397 * \param Scope Lexical block.
398 * \param File Source file.
399 * \param Discriminator DWARF path discriminator value.
400 */
403 LLVMMetadataRef Scope,
404 LLVMMetadataRef File,
405 unsigned Discriminator);
406
407/**
408 * Create a descriptor for an imported namespace. Suitable for e.g. C++
409 * using declarations.
410 * \param Builder The \c DIBuilder.
411 * \param Scope The scope this module is imported into
412 * \param File File where the declaration is located.
413 * \param Line Line number of the declaration.
414 */
417 LLVMMetadataRef Scope,
419 LLVMMetadataRef File,
420 unsigned Line);
421
422/**
423 * Create a descriptor for an imported module that aliases another
424 * imported entity descriptor.
425 * \param Builder The \c DIBuilder.
426 * \param Scope The scope this module is imported into
427 * \param ImportedEntity Previous imported entity to alias.
428 * \param File File where the declaration is located.
429 * \param Line Line number of the declaration.
430 * \param Elements Renamed elements.
431 * \param NumElements Number of renamed elements.
432 */
434 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope,
435 LLVMMetadataRef ImportedEntity, LLVMMetadataRef File, unsigned Line,
436 LLVMMetadataRef *Elements, unsigned NumElements);
437
438/**
439 * Create a descriptor for an imported module.
440 * \param Builder The \c DIBuilder.
441 * \param Scope The scope this module is imported into
442 * \param M The module being imported here
443 * \param File File where the declaration is located.
444 * \param Line Line number of the declaration.
445 * \param Elements Renamed elements.
446 * \param NumElements Number of renamed elements.
447 */
450 LLVMMetadataRef File, unsigned Line, LLVMMetadataRef *Elements,
451 unsigned NumElements);
452
453/**
454 * Create a descriptor for an imported function, type, or variable. Suitable
455 * for e.g. FORTRAN-style USE declarations.
456 * \param Builder The DIBuilder.
457 * \param Scope The scope this module is imported into.
458 * \param Decl The declaration (or definition) of a function, type,
459 or variable.
460 * \param File File where the declaration is located.
461 * \param Line Line number of the declaration.
462 * \param Name A name that uniquely identifies this imported
463 declaration.
464 * \param NameLen The length of the C string passed to \c Name.
465 * \param Elements Renamed elements.
466 * \param NumElements Number of renamed elements.
467 */
470 LLVMMetadataRef File, unsigned Line, const char *Name, size_t NameLen,
471 LLVMMetadataRef *Elements, unsigned NumElements);
472
473/**
474 * Creates a new DebugLocation that describes a source location.
475 * \param Line The line in the source file.
476 * \param Column The column in the source file.
477 * \param Scope The scope in which the location resides.
478 * \param InlinedAt The scope where this location was inlined, if at all.
479 * (optional).
480 * \note If the item to which this location is attached cannot be
481 * attributed to a source line, pass 0 for the line and column.
482 */
485 unsigned Column, LLVMMetadataRef Scope,
486 LLVMMetadataRef InlinedAt);
487
488/**
489 * Get the line number of this debug location.
490 * \param Location The debug location.
491 *
492 * @see DILocation::getLine()
493 */
494unsigned LLVMDILocationGetLine(LLVMMetadataRef Location);
495
496/**
497 * Get the column number of this debug location.
498 * \param Location The debug location.
499 *
500 * @see DILocation::getColumn()
501 */
503
504/**
505 * Get the local scope associated with this debug location.
506 * \param Location The debug location.
507 *
508 * @see DILocation::getScope()
509 */
511
512/**
513 * Get the "inline at" location associated with this debug location.
514 * \param Location The debug location.
515 *
516 * @see DILocation::getInlinedAt()
517 */
519
520/**
521 * Get the metadata of the file associated with a given scope.
522 * \param Scope The scope object.
523 *
524 * @see DIScope::getFile()
525 */
527
528/**
529 * Get the directory of a given file.
530 * \param File The file object.
531 * \param Len The length of the returned string.
532 *
533 * @see DIFile::getDirectory()
534 */
535const char *LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len);
536
537/**
538 * Get the name of a given file.
539 * \param File The file object.
540 * \param Len The length of the returned string.
541 *
542 * @see DIFile::getFilename()
543 */
544const char *LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len);
545
546/**
547 * Get the source of a given file.
548 * \param File The file object.
549 * \param Len The length of the returned string.
550 *
551 * @see DIFile::getSource()
552 */
553const char *LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len);
554
555/**
556 * Create a type array.
557 * \param Builder The DIBuilder.
558 * \param Data The type elements.
559 * \param NumElements Number of type elements.
560 */
562 LLVMMetadataRef *Data,
563 size_t NumElements);
564
565/**
566 * Create subroutine type.
567 * \param Builder The DIBuilder.
568 * \param File The file in which the subroutine resides.
569 * \param ParameterTypes An array of subroutine parameter types. This
570 * includes return type at 0th index.
571 * \param NumParameterTypes The number of parameter types in \c ParameterTypes
572 * \param Flags E.g.: \c LLVMDIFlagLValueReference.
573 * These flags are used to emit dwarf attributes.
574 */
577 LLVMMetadataRef File,
578 LLVMMetadataRef *ParameterTypes,
579 unsigned NumParameterTypes,
580 LLVMDIFlags Flags);
581
582/**
583 * Create debugging information entry for a macro.
584 * @param Builder The DIBuilder.
585 * @param ParentMacroFile Macro parent (could be NULL).
586 * @param Line Source line number where the macro is defined.
587 * @param RecordType DW_MACINFO_define or DW_MACINFO_undef.
588 * @param Name Macro name.
589 * @param NameLen Macro name length.
590 * @param Value Macro value.
591 * @param ValueLen Macro value length.
592 */
594 LLVMMetadataRef ParentMacroFile,
595 unsigned Line,
597 const char *Name, size_t NameLen,
598 const char *Value, size_t ValueLen);
599
600/**
601 * Create debugging information temporary entry for a macro file.
602 * List of macro node direct children will be calculated by DIBuilder,
603 * using the \p ParentMacroFile relationship.
604 * @param Builder The DIBuilder.
605 * @param ParentMacroFile Macro parent (could be NULL).
606 * @param Line Source line number where the macro file is included.
607 * @param File File descriptor containing the name of the macro file.
608 */
611 LLVMMetadataRef ParentMacroFile, unsigned Line,
612 LLVMMetadataRef File);
613
614/**
615 * Create debugging information entry for an enumerator.
616 * @param Builder The DIBuilder.
617 * @param Name Enumerator name.
618 * @param NameLen Length of enumerator name.
619 * @param Value Enumerator value.
620 * @param IsUnsigned True if the value is unsigned.
621 */
623 const char *Name, size_t NameLen,
624 int64_t Value,
625 LLVMBool IsUnsigned);
626
627/**
628 * Create debugging information entry for an enumeration.
629 * \param Builder The DIBuilder.
630 * \param Scope Scope in which this enumeration is defined.
631 * \param Name Enumeration name.
632 * \param NameLen Length of enumeration name.
633 * \param File File where this member is defined.
634 * \param LineNumber Line number.
635 * \param SizeInBits Member size.
636 * \param AlignInBits Member alignment.
637 * \param Elements Enumeration elements.
638 * \param NumElements Number of enumeration elements.
639 * \param ClassTy Underlying type of a C++11/ObjC fixed enum.
640 */
642 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
643 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
644 uint64_t SizeInBits, uint32_t AlignInBits, LLVMMetadataRef *Elements,
645 unsigned NumElements, LLVMMetadataRef ClassTy);
646
647/**
648 * Create debugging information entry for a union.
649 * \param Builder The DIBuilder.
650 * \param Scope Scope in which this union is defined.
651 * \param Name Union name.
652 * \param NameLen Length of union name.
653 * \param File File where this member is defined.
654 * \param LineNumber Line number.
655 * \param SizeInBits Member size.
656 * \param AlignInBits Member alignment.
657 * \param Flags Flags to encode member attribute, e.g. private
658 * \param Elements Union elements.
659 * \param NumElements Number of union elements.
660 * \param RunTimeLang Optional parameter, Objective-C runtime version.
661 * \param UniqueId A unique identifier for the union.
662 * \param UniqueIdLen Length of unique identifier.
663 */
665 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
666 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
667 uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
668 LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang,
669 const char *UniqueId, size_t UniqueIdLen);
670
671
672/**
673 * Create debugging information entry for an array.
674 * \param Builder The DIBuilder.
675 * \param Size Array size.
676 * \param AlignInBits Alignment.
677 * \param Ty Element type.
678 * \param Subscripts Subscripts.
679 * \param NumSubscripts Number of subscripts.
680 */
683 uint32_t AlignInBits, LLVMMetadataRef Ty,
684 LLVMMetadataRef *Subscripts,
685 unsigned NumSubscripts);
686
687/**
688 * Create debugging information entry for a vector type.
689 * \param Builder The DIBuilder.
690 * \param Size Vector size.
691 * \param AlignInBits Alignment.
692 * \param Ty Element type.
693 * \param Subscripts Subscripts.
694 * \param NumSubscripts Number of subscripts.
695 */
698 uint32_t AlignInBits, LLVMMetadataRef Ty,
699 LLVMMetadataRef *Subscripts,
700 unsigned NumSubscripts);
701
702/**
703 * Create a DWARF unspecified type.
704 * \param Builder The DIBuilder.
705 * \param Name The unspecified type's name.
706 * \param NameLen Length of type name.
707 */
710 size_t NameLen);
711
712/**
713 * Create debugging information entry for a basic
714 * type.
715 * \param Builder The DIBuilder.
716 * \param Name Type name.
717 * \param NameLen Length of type name.
718 * \param SizeInBits Size of the type.
719 * \param Encoding DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float.
720 * \param Flags Flags to encode optional attribute like endianity
721 */
724 size_t NameLen, uint64_t SizeInBits,
725 LLVMDWARFTypeEncoding Encoding,
726 LLVMDIFlags Flags);
727
728/**
729 * Create debugging information entry for a pointer.
730 * \param Builder The DIBuilder.
731 * \param PointeeTy Type pointed by this pointer.
732 * \param SizeInBits Size.
733 * \param AlignInBits Alignment. (optional, pass 0 to ignore)
734 * \param AddressSpace DWARF address space. (optional, pass 0 to ignore)
735 * \param Name Pointer type name. (optional)
736 * \param NameLen Length of pointer type name. (optional)
737 */
739 LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy,
740 uint64_t SizeInBits, uint32_t AlignInBits, unsigned AddressSpace,
741 const char *Name, size_t NameLen);
742
743/**
744 * Create debugging information entry for a struct.
745 * \param Builder The DIBuilder.
746 * \param Scope Scope in which this struct is defined.
747 * \param Name Struct name.
748 * \param NameLen Struct name length.
749 * \param File File where this member is defined.
750 * \param LineNumber Line number.
751 * \param SizeInBits Member size.
752 * \param AlignInBits Member alignment.
753 * \param Flags Flags to encode member attribute, e.g. private
754 * \param Elements Struct elements.
755 * \param NumElements Number of struct elements.
756 * \param RunTimeLang Optional parameter, Objective-C runtime version.
757 * \param VTableHolder The object containing the vtable for the struct.
758 * \param UniqueId A unique identifier for the struct.
759 * \param UniqueIdLen Length of the unique identifier for the struct.
760 */
762 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
763 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
764 uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
765 LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements,
766 unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder,
767 const char *UniqueId, size_t UniqueIdLen);
768
769/**
770 * Create debugging information entry for a member.
771 * \param Builder The DIBuilder.
772 * \param Scope Member scope.
773 * \param Name Member name.
774 * \param NameLen Length of member name.
775 * \param File File where this member is defined.
776 * \param LineNo Line number.
777 * \param SizeInBits Member size.
778 * \param AlignInBits Member alignment.
779 * \param OffsetInBits Member offset.
780 * \param Flags Flags to encode member attribute, e.g. private
781 * \param Ty Parent type.
782 */
784 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
785 size_t NameLen, LLVMMetadataRef File, unsigned LineNo,
786 uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
787 LLVMDIFlags Flags, LLVMMetadataRef Ty);
788
789/**
790 * Create debugging information entry for a
791 * C++ static data member.
792 * \param Builder The DIBuilder.
793 * \param Scope Member scope.
794 * \param Name Member name.
795 * \param NameLen Length of member name.
796 * \param File File where this member is declared.
797 * \param LineNumber Line number.
798 * \param Type Type of the static member.
799 * \param Flags Flags to encode member attribute, e.g. private.
800 * \param ConstantVal Const initializer of the member.
801 * \param AlignInBits Member alignment.
802 */
805 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
806 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
807 LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal,
808 uint32_t AlignInBits);
809
810/**
811 * Create debugging information entry for a pointer to member.
812 * \param Builder The DIBuilder.
813 * \param PointeeType Type pointed to by this pointer.
814 * \param ClassType Type for which this pointer points to members of.
815 * \param SizeInBits Size.
816 * \param AlignInBits Alignment.
817 * \param Flags Flags.
818 */
821 LLVMMetadataRef PointeeType,
822 LLVMMetadataRef ClassType,
823 uint64_t SizeInBits,
824 uint32_t AlignInBits,
825 LLVMDIFlags Flags);
826/**
827 * Create debugging information entry for Objective-C instance variable.
828 * \param Builder The DIBuilder.
829 * \param Name Member name.
830 * \param NameLen The length of the C string passed to \c Name.
831 * \param File File where this member is defined.
832 * \param LineNo Line number.
833 * \param SizeInBits Member size.
834 * \param AlignInBits Member alignment.
835 * \param OffsetInBits Member offset.
836 * \param Flags Flags to encode member attribute, e.g. private
837 * \param Ty Parent type.
838 * \param PropertyNode Property associated with this ivar.
839 */
842 const char *Name, size_t NameLen,
843 LLVMMetadataRef File, unsigned LineNo,
844 uint64_t SizeInBits, uint32_t AlignInBits,
845 uint64_t OffsetInBits, LLVMDIFlags Flags,
846 LLVMMetadataRef Ty, LLVMMetadataRef PropertyNode);
847
848/**
849 * Create debugging information entry for Objective-C property.
850 * \param Builder The DIBuilder.
851 * \param Name Property name.
852 * \param NameLen The length of the C string passed to \c Name.
853 * \param File File where this property is defined.
854 * \param LineNo Line number.
855 * \param GetterName Name of the Objective C property getter selector.
856 * \param GetterNameLen The length of the C string passed to \c GetterName.
857 * \param SetterName Name of the Objective C property setter selector.
858 * \param SetterNameLen The length of the C string passed to \c SetterName.
859 * \param PropertyAttributes Objective C property attributes.
860 * \param Ty Type.
861 */
864 const char *Name, size_t NameLen,
865 LLVMMetadataRef File, unsigned LineNo,
866 const char *GetterName, size_t GetterNameLen,
867 const char *SetterName, size_t SetterNameLen,
868 unsigned PropertyAttributes,
869 LLVMMetadataRef Ty);
870
871/**
872 * Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set.
873 * \param Builder The DIBuilder.
874 * \param Type The underlying type to which this pointer points.
875 */
879
880/**
881 * Create debugging information entry for a qualified
882 * type, e.g. 'const int'.
883 * \param Builder The DIBuilder.
884 * \param Tag Tag identifying type,
885 * e.g. LLVMDWARFTypeQualifier_volatile_type
886 * \param Type Base Type.
887 */
891
892/**
893 * Create debugging information entry for a c++
894 * style reference or rvalue reference type.
895 * \param Builder The DIBuilder.
896 * \param Tag Tag identifying type,
897 * \param Type Base Type.
898 */
902
903/**
904 * Create C++11 nullptr type.
905 * \param Builder The DIBuilder.
906 */
909
910/**
911 * Create debugging information entry for a typedef.
912 * \param Builder The DIBuilder.
913 * \param Type Original type.
914 * \param Name Typedef name.
915 * \param File File where this type is defined.
916 * \param LineNo Line number.
917 * \param Scope The surrounding context for the typedef.
918 */
921 const char *Name, size_t NameLen,
922 LLVMMetadataRef File, unsigned LineNo,
923 LLVMMetadataRef Scope, uint32_t AlignInBits);
924
925/**
926 * Create debugging information entry to establish inheritance relationship
927 * between two types.
928 * \param Builder The DIBuilder.
929 * \param Ty Original type.
930 * \param BaseTy Base type. Ty is inherits from base.
931 * \param BaseOffset Base offset.
932 * \param VBPtrOffset Virtual base pointer offset.
933 * \param Flags Flags to describe inheritance attribute, e.g. private
934 */
938 uint64_t BaseOffset, uint32_t VBPtrOffset,
939 LLVMDIFlags Flags);
940
941/**
942 * Create a permanent forward-declared type.
943 * \param Builder The DIBuilder.
944 * \param Tag A unique tag for this type.
945 * \param Name Type name.
946 * \param NameLen Length of type name.
947 * \param Scope Type scope.
948 * \param File File where this type is defined.
949 * \param Line Line number where this type is defined.
950 * \param RuntimeLang Indicates runtime version for languages like
951 * Objective-C.
952 * \param SizeInBits Member size.
953 * \param AlignInBits Member alignment.
954 * \param UniqueIdentifier A unique identifier for the type.
955 * \param UniqueIdentifierLen Length of the unique identifier.
956 */
958 LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
959 size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
960 unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
961 const char *UniqueIdentifier, size_t UniqueIdentifierLen);
962
963/**
964 * Create a temporary forward-declared type.
965 * \param Builder The DIBuilder.
966 * \param Tag A unique tag for this type.
967 * \param Name Type name.
968 * \param NameLen Length of type name.
969 * \param Scope Type scope.
970 * \param File File where this type is defined.
971 * \param Line Line number where this type is defined.
972 * \param RuntimeLang Indicates runtime version for languages like
973 * Objective-C.
974 * \param SizeInBits Member size.
975 * \param AlignInBits Member alignment.
976 * \param Flags Flags.
977 * \param UniqueIdentifier A unique identifier for the type.
978 * \param UniqueIdentifierLen Length of the unique identifier.
979 */
982 LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
983 size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
984 unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
985 LLVMDIFlags Flags, const char *UniqueIdentifier,
986 size_t UniqueIdentifierLen);
987
988/**
989 * Create debugging information entry for a bit field member.
990 * \param Builder The DIBuilder.
991 * \param Scope Member scope.
992 * \param Name Member name.
993 * \param NameLen Length of member name.
994 * \param File File where this member is defined.
995 * \param LineNumber Line number.
996 * \param SizeInBits Member size.
997 * \param OffsetInBits Member offset.
998 * \param StorageOffsetInBits Member storage offset.
999 * \param Flags Flags to encode member attribute.
1000 * \param Type Parent type.
1001 */
1004 LLVMMetadataRef Scope,
1005 const char *Name, size_t NameLen,
1006 LLVMMetadataRef File, unsigned LineNumber,
1007 uint64_t SizeInBits,
1008 uint64_t OffsetInBits,
1009 uint64_t StorageOffsetInBits,
1011
1012/**
1013 * Create debugging information entry for a class.
1014 * \param Scope Scope in which this class is defined.
1015 * \param Name Class name.
1016 * \param NameLen The length of the C string passed to \c Name.
1017 * \param File File where this member is defined.
1018 * \param LineNumber Line number.
1019 * \param SizeInBits Member size.
1020 * \param AlignInBits Member alignment.
1021 * \param OffsetInBits Member offset.
1022 * \param Flags Flags to encode member attribute, e.g. private.
1023 * \param DerivedFrom Debug info of the base class of this type.
1024 * \param Elements Class members.
1025 * \param NumElements Number of class elements.
1026 * \param VTableHolder Debug info of the base class that contains vtable
1027 * for this type. This is used in
1028 * DW_AT_containing_type. See DWARF documentation
1029 * for more info.
1030 * \param TemplateParamsNode Template type parameters.
1031 * \param UniqueIdentifier A unique identifier for the type.
1032 * \param UniqueIdentifierLen Length of the unique identifier.
1033 */
1035 LLVMMetadataRef Scope, const char *Name, size_t NameLen,
1036 LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
1037 uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags,
1038 LLVMMetadataRef DerivedFrom,
1039 LLVMMetadataRef *Elements, unsigned NumElements,
1040 LLVMMetadataRef VTableHolder, LLVMMetadataRef TemplateParamsNode,
1041 const char *UniqueIdentifier, size_t UniqueIdentifierLen);
1042
1043/**
1044 * Create a uniqued DIType* clone with FlagArtificial set.
1045 * \param Builder The DIBuilder.
1046 * \param Type The underlying type.
1047 */
1051
1052/**
1053 * Get the name of this DIType.
1054 * \param DType The DIType.
1055 * \param Length The length of the returned string.
1056 *
1057 * @see DIType::getName()
1058 */
1059const char *LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length);
1060
1061/**
1062 * Get the size of this DIType in bits.
1063 * \param DType The DIType.
1064 *
1065 * @see DIType::getSizeInBits()
1066 */
1068
1069/**
1070 * Get the offset of this DIType in bits.
1071 * \param DType The DIType.
1072 *
1073 * @see DIType::getOffsetInBits()
1074 */
1076
1077/**
1078 * Get the alignment of this DIType in bits.
1079 * \param DType The DIType.
1080 *
1081 * @see DIType::getAlignInBits()
1082 */
1084
1085/**
1086 * Get the source line where this DIType is declared.
1087 * \param DType The DIType.
1088 *
1089 * @see DIType::getLine()
1090 */
1091unsigned LLVMDITypeGetLine(LLVMMetadataRef DType);
1092
1093/**
1094 * Get the flags associated with this DIType.
1095 * \param DType The DIType.
1096 *
1097 * @see DIType::getFlags()
1098 */
1100
1101/**
1102 * Create a descriptor for a value range.
1103 * \param Builder The DIBuilder.
1104 * \param LowerBound Lower bound of the subrange, e.g. 0 for C, 1 for Fortran.
1105 * \param Count Count of elements in the subrange.
1106 */
1108 int64_t LowerBound,
1109 int64_t Count);
1110
1111/**
1112 * Create an array of DI Nodes.
1113 * \param Builder The DIBuilder.
1114 * \param Data The DI Node elements.
1115 * \param NumElements Number of DI Node elements.
1116 */
1118 LLVMMetadataRef *Data,
1119 size_t NumElements);
1120
1121/**
1122 * Create a new descriptor for the specified variable which has a complex
1123 * address expression for its address.
1124 * \param Builder The DIBuilder.
1125 * \param Addr An array of complex address operations.
1126 * \param Length Length of the address operation array.
1127 */
1129 uint64_t *Addr, size_t Length);
1130
1131/**
1132 * Create a new descriptor for the specified variable that does not have an
1133 * address, but does have a constant value.
1134 * \param Builder The DIBuilder.
1135 * \param Value The constant value.
1136 */
1139 uint64_t Value);
1140
1141/**
1142 * Create a new descriptor for the specified variable.
1143 * \param Scope Variable scope.
1144 * \param Name Name of the variable.
1145 * \param NameLen The length of the C string passed to \c Name.
1146 * \param Linkage Mangled name of the variable.
1147 * \param LinkLen The length of the C string passed to \c Linkage.
1148 * \param File File where this variable is defined.
1149 * \param LineNo Line number.
1150 * \param Ty Variable Type.
1151 * \param LocalToUnit Boolean flag indicate whether this variable is
1152 * externally visible or not.
1153 * \param Expr The location of the global relative to the attached
1154 * GlobalVariable.
1155 * \param Decl Reference to the corresponding declaration.
1156 * variables.
1157 * \param AlignInBits Variable alignment(or 0 if no alignment attr was
1158 * specified)
1159 */
1161 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1162 size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File,
1163 unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
1164 LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits);
1165
1166
1167/**
1168 * Get the dwarf::Tag of a DINode
1169 */
1171
1172/**
1173 * Retrieves the \c DIVariable associated with this global variable expression.
1174 * \param GVE The global variable expression.
1175 *
1176 * @see llvm::DIGlobalVariableExpression::getVariable()
1177 */
1179
1180/**
1181 * Retrieves the \c DIExpression associated with this global variable expression.
1182 * \param GVE The global variable expression.
1183 *
1184 * @see llvm::DIGlobalVariableExpression::getExpression()
1185 */
1187 LLVMMetadataRef GVE);
1188
1189/**
1190 * Get the metadata of the file associated with a given variable.
1191 * \param Var The variable object.
1192 *
1193 * @see DIVariable::getFile()
1194 */
1196
1197/**
1198 * Get the metadata of the scope associated with a given variable.
1199 * \param Var The variable object.
1200 *
1201 * @see DIVariable::getScope()
1202 */
1204
1205/**
1206 * Get the source line where this \c DIVariable is declared.
1207 * \param Var The DIVariable.
1208 *
1209 * @see DIVariable::getLine()
1210 */
1212
1213/**
1214 * Create a new temporary \c MDNode. Suitable for use in constructing cyclic
1215 * \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd,
1216 * and must be manually deleted with \c LLVMDisposeTemporaryMDNode.
1217 * \param Ctx The context in which to construct the temporary node.
1218 * \param Data The metadata elements.
1219 * \param NumElements Number of metadata elements.
1220 */
1222 size_t NumElements);
1223
1224/**
1225 * Deallocate a temporary node.
1226 *
1227 * Calls \c replaceAllUsesWith(nullptr) before deleting, so any remaining
1228 * references will be reset.
1229 * \param TempNode The temporary metadata node.
1230 */
1232
1233/**
1234 * Replace all uses of temporary metadata.
1235 * \param TempTargetMetadata The temporary metadata node.
1236 * \param Replacement The replacement metadata node.
1237 */
1238void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata,
1239 LLVMMetadataRef Replacement);
1240
1241/**
1242 * Create a new descriptor for the specified global variable that is temporary
1243 * and meant to be RAUWed.
1244 * \param Scope Variable scope.
1245 * \param Name Name of the variable.
1246 * \param NameLen The length of the C string passed to \c Name.
1247 * \param Linkage Mangled name of the variable.
1248 * \param LnkLen The length of the C string passed to \c Linkage.
1249 * \param File File where this variable is defined.
1250 * \param LineNo Line number.
1251 * \param Ty Variable Type.
1252 * \param LocalToUnit Boolean flag indicate whether this variable is
1253 * externally visible or not.
1254 * \param Decl Reference to the corresponding declaration.
1255 * \param AlignInBits Variable alignment(or 0 if no alignment attr was
1256 * specified)
1257 */
1259 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1260 size_t NameLen, const char *Linkage, size_t LnkLen, LLVMMetadataRef File,
1261 unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
1262 LLVMMetadataRef Decl, uint32_t AlignInBits);
1263
1264/*
1265 * Insert a new Declare DbgRecord before the given instruction.
1266 *
1267 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1268 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1269 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1270 *
1271 * \param Builder The DIBuilder.
1272 * \param Storage The storage of the variable to declare.
1273 * \param VarInfo The variable's debug info descriptor.
1274 * \param Expr A complex location expression for the variable.
1275 * \param DebugLoc Debug info location.
1276 * \param Instr Instruction acting as a location for the new intrinsic.
1277 */
1280 LLVMMetadataRef VarInfo, LLVMMetadataRef Expr,
1281 LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1282/**
1283 * Soon to be deprecated.
1284 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1285 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1286 *
1287 * Insert a new llvm.dbg.declare intrinsic call before the given instruction.
1288 * \param Builder The DIBuilder.
1289 * \param Storage The storage of the variable to declare.
1290 * \param VarInfo The variable's debug info descriptor.
1291 * \param Expr A complex location expression for the variable.
1292 * \param DebugLoc Debug info location.
1293 * \param Instr Instruction acting as a location for the new intrinsic.
1294 */
1296 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1297 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1298/**
1299 * Soon to be deprecated.
1300 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1301 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1302 *
1303 * Insert a Declare DbgRecord before the given instruction.
1304 * \param Builder The DIBuilder.
1305 * \param Storage The storage of the variable to declare.
1306 * \param VarInfo The variable's debug info descriptor.
1307 * \param Expr A complex location expression for the variable.
1308 * \param DebugLoc Debug info location.
1309 * \param Instr Instruction acting as a location for the new record.
1310 */
1312 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1313 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1314
1315/**
1316 * Insert a new Declare DbgRecord at the end of the given basic block. If the
1317 * basic block has a terminator instruction, the intrinsic is inserted before
1318 * that terminator instruction.
1319 *
1320 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1321 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1322 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1323 *
1324 * \param Builder The DIBuilder.
1325 * \param Storage The storage of the variable to declare.
1326 * \param VarInfo The variable's debug info descriptor.
1327 * \param Expr A complex location expression for the variable.
1328 * \param DebugLoc Debug info location.
1329 * \param Block Basic block acting as a location for the new intrinsic.
1330 */
1332 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1333 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1334/**
1335 * Soon to be deprecated.
1336 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1337 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1338 *
1339 * Insert a new llvm.dbg.declare intrinsic call at the end of the given basic
1340 * block. If the basic block has a terminator instruction, the intrinsic is
1341 * inserted before that terminator instruction.
1342 * \param Builder The DIBuilder.
1343 * \param Storage The storage of the variable to declare.
1344 * \param VarInfo The variable's debug info descriptor.
1345 * \param Expr A complex location expression for the variable.
1346 * \param DebugLoc Debug info location.
1347 * \param Block Basic block acting as a location for the new intrinsic.
1348 */
1350 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1351 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1352/**
1353 * Soon to be deprecated.
1354 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1355 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1356 *
1357 * Insert a Declare DbgRecord at the end of the given basic block. If the basic
1358 * block has a terminator instruction, the record is inserted before that
1359 * terminator instruction.
1360 * \param Builder The DIBuilder.
1361 * \param Storage The storage of the variable to declare.
1362 * \param VarInfo The variable's debug info descriptor.
1363 * \param Expr A complex location expression for the variable.
1364 * \param DebugLoc Debug info location.
1365 * \param Block Basic block acting as a location for the new record.
1366 */
1368 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1369 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1370
1371/**
1372 * Insert a new Value DbgRecord before the given instruction.
1373 *
1374 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1375 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1376 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1377 *
1378 * \param Builder The DIBuilder.
1379 * \param Val The value of the variable.
1380 * \param VarInfo The variable's debug info descriptor.
1381 * \param Expr A complex location expression for the variable.
1382 * \param DebugLoc Debug info location.
1383 * \param Instr Instruction acting as a location for the new intrinsic.
1384 */
1387 LLVMMetadataRef VarInfo, LLVMMetadataRef Expr,
1388 LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1389/**
1390 * Soon to be deprecated.
1391 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1392 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1393 *
1394 * Insert a new llvm.dbg.value intrinsic call before the given instruction.
1395 * \param Builder The DIBuilder.
1396 * \param Val The value of the variable.
1397 * \param VarInfo The variable's debug info descriptor.
1398 * \param Expr A complex location expression for the variable.
1399 * \param DebugLoc Debug info location.
1400 * \param Instr Instruction acting as a location for the new intrinsic.
1401 */
1403 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1404 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1405/**
1406 * Soon to be deprecated.
1407 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1408 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1409 *
1410 * Insert a new llvm.dbg.value intrinsic call before the given instruction.
1411 * \param Builder The DIBuilder.
1412 * \param Val The value of the variable.
1413 * \param VarInfo The variable's debug info descriptor.
1414 * \param Expr A complex location expression for the variable.
1415 * \param DebugLoc Debug info location.
1416 * \param Instr Instruction acting as a location for the new intrinsic.
1417 */
1419 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1420 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1421
1422/**
1423 * Insert a new Value DbgRecord at the end of the given basic block. If the
1424 * basic block has a terminator instruction, the intrinsic is inserted before
1425 * that terminator instruction.
1426 *
1427 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1428 * Use LLVMSetIsNewDbgInfoFormat(LLVMBool) to convert between formats.
1429 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1430 *
1431 * \param Builder The DIBuilder.
1432 * \param Val The value of the variable.
1433 * \param VarInfo The variable's debug info descriptor.
1434 * \param Expr A complex location expression for the variable.
1435 * \param DebugLoc Debug info location.
1436 * \param Block Basic block acting as a location for the new intrinsic.
1437 */
1439 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1440 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1441/**
1442 * Soon to be deprecated.
1443 * Only use in "old debug mode" (LLVMIsNewDbgInfoFormat() is false).
1444 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1445 *
1446 * Insert a new llvm.dbg.value intrinsic call at the end of the given basic
1447 * block. If the basic block has a terminator instruction, the intrinsic is
1448 * inserted before that terminator instruction.
1449 * \param Builder The DIBuilder.
1450 * \param Val The value of the variable.
1451 * \param VarInfo The variable's debug info descriptor.
1452 * \param Expr A complex location expression for the variable.
1453 * \param DebugLoc Debug info location.
1454 * \param Block Basic block acting as a location for the new intrinsic.
1455 */
1457 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1458 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1459/**
1460 * Soon to be deprecated.
1461 * Only use in "new debug mode" (LLVMIsNewDbgInfoFormat() is true).
1462 * See https://llvm.org/docs/RemoveDIsDebugInfo.html#c-api-changes
1463 *
1464 * Insert a new llvm.dbg.value intrinsic call at the end of the given basic
1465 * block. If the basic block has a terminator instruction, the intrinsic is
1466 * inserted before that terminator instruction.
1467 * \param Builder The DIBuilder.
1468 * \param Val The value of the variable.
1469 * \param VarInfo The variable's debug info descriptor.
1470 * \param Expr A complex location expression for the variable.
1471 * \param DebugLoc Debug info location.
1472 * \param Block Basic block acting as a location for the new intrinsic.
1473 */
1475 LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo,
1476 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1477
1478/**
1479 * Create a new descriptor for a local auto variable.
1480 * \param Builder The DIBuilder.
1481 * \param Scope The local scope the variable is declared in.
1482 * \param Name Variable name.
1483 * \param NameLen Length of variable name.
1484 * \param File File where this variable is defined.
1485 * \param LineNo Line number.
1486 * \param Ty Metadata describing the type of the variable.
1487 * \param AlwaysPreserve If true, this descriptor will survive optimizations.
1488 * \param Flags Flags.
1489 * \param AlignInBits Variable alignment.
1490 */
1492 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1493 size_t NameLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
1494 LLVMBool AlwaysPreserve, LLVMDIFlags Flags, uint32_t AlignInBits);
1495
1496/**
1497 * Create a new descriptor for a function parameter variable.
1498 * \param Builder The DIBuilder.
1499 * \param Scope The local scope the variable is declared in.
1500 * \param Name Variable name.
1501 * \param NameLen Length of variable name.
1502 * \param ArgNo Unique argument number for this variable; starts at 1.
1503 * \param File File where this variable is defined.
1504 * \param LineNo Line number.
1505 * \param Ty Metadata describing the type of the variable.
1506 * \param AlwaysPreserve If true, this descriptor will survive optimizations.
1507 * \param Flags Flags.
1508 */
1510 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1511 size_t NameLen, unsigned ArgNo, LLVMMetadataRef File, unsigned LineNo,
1512 LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags);
1513
1514/**
1515 * Get the metadata of the subprogram attached to a function.
1516 *
1517 * @see llvm::Function::getSubprogram()
1518 */
1520
1521/**
1522 * Set the subprogram attached to a function.
1523 *
1524 * @see llvm::Function::setSubprogram()
1525 */
1527
1528/**
1529 * Get the line associated with a given subprogram.
1530 * \param Subprogram The subprogram object.
1531 *
1532 * @see DISubprogram::getLine()
1533 */
1534unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram);
1535
1536/**
1537 * Get the debug location for the given instruction.
1538 *
1539 * @see llvm::Instruction::getDebugLoc()
1540 */
1542
1543/**
1544 * Set the debug location for the given instruction.
1545 *
1546 * To clear the location metadata of the given instruction, pass NULL to \p Loc.
1547 *
1548 * @see llvm::Instruction::setDebugLoc()
1549 */
1551
1552/**
1553 * Obtain the enumerated type of a Metadata instance.
1554 *
1555 * @see llvm::Metadata::getMetadataID()
1556 */
1558
1559/**
1560 * @}
1561 */
1562
1564
1565#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:1391
LLVMMetadataRef LLVMDILocationGetInlinedAt(LLVMMetadataRef Location)
Get the "inline at" location associated with this debug location.
Definition: DebugInfo.cpp:1222
LLVMDbgRecordRef LLVMDIBuilderInsertDeclareBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Definition: DebugInfo.cpp:1666
LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Builder, LLVMMetadataRef *Data, size_t NumElements)
Create an array of DI Nodes.
Definition: DebugInfo.cpp:1842
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:1279
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:1176
LLVMMetadataRef LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder, LLVMMetadataRef Type)
Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set.
Definition: DebugInfo.cpp:1419
uint64_t LLVMDITypeGetSizeInBits(LLVMMetadataRef DType)
Get the size of this DIType in bits.
Definition: DebugInfo.cpp:1553
LLVMDWARFMacinfoRecordType
Describes the kind of macro declaration used for LLVMDIBuilderCreateMacro.
Definition: DebugInfo.h:210
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:1118
LLVMDbgRecordRef LLVMDIBuilderInsertDeclareRecordAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Soon to be deprecated.
Definition: DebugInfo.cpp:1727
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:1743
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:1780
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:1503
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE)
Retrieves the DIVariable associated with this global variable expression.
Definition: DebugInfo.cpp:1616
LLVMMetadataRef LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder, LLVMMetadataRef Type)
Create a uniqued DIType* clone with FlagArtificial set.
Definition: DebugInfo.cpp:1538
void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder)
Construct any deferred debug info descriptors.
Definition: DebugInfo.cpp:1060
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:1142
unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram)
Get the line associated with a given subprogram.
Definition: DebugInfo.cpp:1857
LLVMMetadataRef LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name, size_t NameLen)
Create a DWARF unspecified type.
Definition: DebugInfo.cpp:1374
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:1110
LLVMMetadataRef LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line, unsigned Column, LLVMMetadataRef Scope, LLVMMetadataRef InlinedAt)
Creates a new DebugLocation that describes a source location.
Definition: DebugInfo.cpp:1203
uint32_t LLVMDITypeGetAlignInBits(LLVMMetadataRef DType)
Get the alignment of this DIType in bits.
Definition: DebugInfo.cpp:1561
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetExpression(LLVMMetadataRef GVE)
Retrieves the DIExpression associated with this global variable expression.
Definition: DebugInfo.cpp:1620
LLVMMetadataRef LLVMDIVariableGetScope(LLVMMetadataRef Var)
Get the metadata of the scope associated with a given variable.
Definition: DebugInfo.cpp:1629
LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst)
Get the debug location for the given instruction.
Definition: DebugInfo.cpp:1861
LLVMMetadataRef LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag, LLVMMetadataRef Type)
Create debugging information entry for a c++ style reference or rvalue reference type.
Definition: DebugInfo.cpp:1478
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:1098
LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M)
Construct a builder for a module, and do not allow for unresolved nodes attached to the module.
Definition: DebugInfo.cpp:1040
void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP)
Set the subprogram attached to a function.
Definition: DebugInfo.cpp:1853
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:1837
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:1044
void LLVMDisposeTemporaryMDNode(LLVMMetadataRef TempNode)
Deallocate a temporary node.
Definition: DebugInfo.cpp:1643
LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location)
Get the local scope associated with this debug location.
Definition: DebugInfo.cpp:1218
LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromNamespace(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef NS, LLVMMetadataRef File, unsigned Line)
Create a descriptor for an imported namespace.
Definition: DebugInfo.cpp:1152
LLVMMetadataRef LLVMDIBuilderCreateTempMacroFile(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentMacroFile, unsigned Line, LLVMMetadataRef File)
Create debugging information temporary entry for a macro file.
Definition: DebugInfo.cpp:1264
void LLVMInstructionSetDebugLoc(LLVMValueRef Inst, LLVMMetadataRef Loc)
Set the debug location for the given instruction.
Definition: DebugInfo.cpp:1865
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:1271
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:1592
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:1318
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:1490
LLVMValueRef LLVMDIBuilderInsertDeclareIntrinsicBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1672
unsigned LLVMDILocationGetColumn(LLVMMetadataRef Location)
Get the column number of this debug location.
Definition: DebugInfo.cpp:1214
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:1786
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:1817
LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data, size_t NumElements)
Create a new temporary MDNode.
Definition: DebugInfo.cpp:1637
LLVMDIFlags LLVMDITypeGetFlags(LLVMMetadataRef DType)
Get the flags associated with this DIType.
Definition: DebugInfo.cpp:1569
const char * LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len)
Get the directory of a given file.
Definition: DebugInfo.cpp:1230
void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata, LLVMMetadataRef Replacement)
Replace all uses of temporary metadata.
Definition: DebugInfo.cpp:1647
const char * LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len)
Get the name of a given file.
Definition: DebugInfo.cpp:1236
unsigned LLVMDebugMetadataVersion(void)
The current debug metadata version number.
Definition: DebugInfo.cpp:1036
unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module)
The version of debug metadata that's present in the provided Module.
Definition: DebugInfo.cpp:1048
unsigned LLVMDITypeGetLine(LLVMMetadataRef DType)
Get the source line where this DIType is declared.
Definition: DebugInfo.cpp:1565
LLVMMetadataRef LLVMDIVariableGetFile(LLVMMetadataRef Var)
Get the metadata of the file associated with a given variable.
Definition: DebugInfo.cpp:1625
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:1163
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:1379
uint16_t LLVMGetDINodeTag(LLVMMetadataRef MD)
Get the dwarf::Tag of a DINode.
Definition: DebugInfo.cpp:1543
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:1604
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:1654
LLVMMetadataRef LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag, LLVMMetadataRef Type)
Create debugging information entry for a qualified type, e.g.
Definition: DebugInfo.cpp:1471
LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata)
Obtain the enumerated type of a Metadata instance.
Definition: DebugInfo.cpp:1872
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:1291
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:1445
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:1827
LLVMMetadataRef LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder, LLVMMetadataRef File, LLVMMetadataRef *ParameterTypes, unsigned NumParameterTypes, LLVMDIFlags Flags)
Create subroutine type.
Definition: DebugInfo.cpp:1581
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:1405
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:1251
LLVMDWARFEmissionKind
The amount of debug information to emit.
Definition: DebugInfo.h:151
LLVMValueRef LLVMDIBuilderInsertDeclareIntrinsicAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Soon to be deprecated.
Definition: DebugInfo.cpp:1712
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:1307
LLVMDbgRecordRef LLVMDIBuilderInsertDbgValueRecordAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Soon to be deprecated.
Definition: DebugInfo.cpp:1801
LLVMMetadataRef LLVMDIScopeGetFile(LLVMMetadataRef Scope)
Get the metadata of the file associated with a given scope.
Definition: DebugInfo.cpp:1226
void LLVMDIBuilderFinalizeSubprogram(LLVMDIBuilderRef Builder, LLVMMetadataRef Subprogram)
Finalize a specific subprogram.
Definition: DebugInfo.cpp:1064
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:1599
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:1518
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:1363
unsigned LLVMDILocationGetLine(LLVMMetadataRef Location)
Get the line number of this debug location.
Definition: DebugInfo.cpp:1210
LLVMMetadataRef LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder)
Create C++11 nullptr type.
Definition: DebugInfo.cpp:1485
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:1435
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:1706
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:1069
LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module)
Strip debug info in the module if it exists.
Definition: DebugInfo.cpp:1052
LLVMDbgRecordRef LLVMDIBuilderInsertDeclareRecordBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1688
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:1329
unsigned LLVMDIVariableGetLine(LLVMMetadataRef Var)
Get the source line where this DIVariable is declared.
Definition: DebugInfo.cpp:1633
LLVMDbgRecordRef LLVMDIBuilderInsertDbgValueRecordBefore(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1764
unsigned LLVMDWARFTypeEncoding
An LLVM DWARF type encoding.
Definition: DebugInfo.h:203
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:1133
LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Builder, LLVMMetadataRef *Data, size_t NumElements)
Create a type array.
Definition: DebugInfo.cpp:1573
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:1457
LLVMValueRef LLVMDIBuilderInsertDbgValueIntrinsicBefore(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Soon to be deprecated.
Definition: DebugInfo.cpp:1749
const char * LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len)
Get the source of a given file.
Definition: DebugInfo.cpp:1242
uint64_t LLVMDITypeGetOffsetInBits(LLVMMetadataRef DType)
Get the offset of this DIType in bits.
Definition: DebugInfo.cpp:1557
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:1189
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:1090
const char * LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length)
Get the name of this DIType.
Definition: DebugInfo.cpp:1547
unsigned LLVMMetadataKind
Definition: DebugInfo.h:198
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:1425
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:1347
void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder)
Deallocates the DIBuilder and everything it owns.
Definition: DebugInfo.cpp:1056
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:1338
LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func)
Get the metadata of the subprogram attached to a function.
Definition: DebugInfo.cpp:1849
@ LLVMDWARFMacinfoRecordTypeStartFile
Definition: DebugInfo.h:213
@ LLVMDWARFMacinfoRecordTypeVendorExt
Definition: DebugInfo.h:215
@ LLVMDWARFMacinfoRecordTypeEndFile
Definition: DebugInfo.h:214
@ LLVMDWARFMacinfoRecordTypeMacro
Definition: DebugInfo.h:212
@ LLVMDWARFMacinfoRecordTypeDefine
Definition: DebugInfo.h:211
@ LLVMDWARFSourceLanguageBLISS
Definition: DebugInfo.h:118
@ LLVMDWARFSourceLanguageJava
Definition: DebugInfo.h:90
@ LLVMDWARFSourceLanguageGOOGLE_RenderScript
Definition: DebugInfo.h:144
@ LLVMDWARFSourceLanguageOpenCL_CPP
Definition: DebugInfo.h:135
@ 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
@ LLVMDWARFSourceLanguageCPP_for_OpenCL
Definition: DebugInfo.h:136
@ LLVMDWARFSourceLanguageAda95
Definition: DebugInfo.h:92
@ LLVMDWARFSourceLanguageD
Definition: DebugInfo.h:98
@ LLVMDWARFSourceLanguageAda2012
Definition: DebugInfo.h:127
@ LLVMDWARFSourceLanguageGLSL_ES
Definition: DebugInfo.h:133
@ LLVMDWARFSourceLanguageMove
Definition: DebugInfo.h:139
@ 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:131
@ LLVMDWARFSourceLanguageOpenCL
Definition: DebugInfo.h:102
@ LLVMDWARFSourceLanguageHylo
Definition: DebugInfo.h:140
@ 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
@ LLVMDWARFSourceLanguageGLSL
Definition: DebugInfo.h:132
@ LLVMDWARFSourceLanguageC_sharp
Definition: DebugInfo.h:130
@ LLVMDWARFSourceLanguageBORLAND_Delphi
Definition: DebugInfo.h:145
@ LLVMDWARFSourceLanguageFortran77
Definition: DebugInfo.h:85
@ LLVMDWARFSourceLanguageMips_Assembler
Definition: DebugInfo.h:143
@ LLVMDWARFSourceLanguageRuby
Definition: DebugInfo.h:138
@ LLVMDWARFSourceLanguageHIP
Definition: DebugInfo.h:128
@ 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
@ LLVMDWARFSourceLanguageAssembly
Definition: DebugInfo.h:129
@ LLVMDWARFSourceLanguageSYCL
Definition: DebugInfo.h:137
@ 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
@ LLVMDWARFSourceLanguageHLSL
Definition: DebugInfo.h:134
@ 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:169
@ LLVMDIDerivedTypeMetadataKind
Definition: DebugInfo.h:173
@ LLVMDIMacroMetadataKind
Definition: DebugInfo.h:190
@ LLVMDILexicalBlockMetadataKind
Definition: DebugInfo.h:179
@ LLVMMDTupleMetadataKind
Definition: DebugInfo.h:165
@ LLVMDIExpressionMetadataKind
Definition: DebugInfo.h:167
@ LLVMDIGlobalVariableExpressionMetadataKind
Definition: DebugInfo.h:168
@ LLVMLocalAsMetadataMetadataKind
Definition: DebugInfo.h:163
@ LLVMDILocalVariableMetadataKind
Definition: DebugInfo.h:186
@ LLVMDILocationMetadataKind
Definition: DebugInfo.h:166
@ LLVMDistinctMDOperandPlaceholderMetadataKind
Definition: DebugInfo.h:164
@ LLVMDILexicalBlockFileMetadataKind
Definition: DebugInfo.h:180
@ LLVMDIMacroFileMetadataKind
Definition: DebugInfo.h:191
@ LLVMDIArgListMetadataKind
Definition: DebugInfo.h:195
@ LLVMDITemplateTypeParameterMetadataKind
Definition: DebugInfo.h:183
@ LLVMDIImportedEntityMetadataKind
Definition: DebugInfo.h:189
@ LLVMDIGlobalVariableMetadataKind
Definition: DebugInfo.h:185
@ LLVMDIAssignIDMetadataKind
Definition: DebugInfo.h:196
@ LLVMDISubrangeMetadataKind
Definition: DebugInfo.h:170
@ LLVMDITemplateValueParameterMetadataKind
Definition: DebugInfo.h:184
@ LLVMDIObjCPropertyMetadataKind
Definition: DebugInfo.h:188
@ LLVMDINamespaceMetadataKind
Definition: DebugInfo.h:181
@ LLVMDIGenericSubrangeMetadataKind
Definition: DebugInfo.h:194
@ LLVMDICompileUnitMetadataKind
Definition: DebugInfo.h:177
@ LLVMDICompositeTypeMetadataKind
Definition: DebugInfo.h:174
@ LLVMMDStringMetadataKind
Definition: DebugInfo.h:161
@ LLVMDIEnumeratorMetadataKind
Definition: DebugInfo.h:171
@ LLVMDIFileMetadataKind
Definition: DebugInfo.h:176
@ LLVMDIModuleMetadataKind
Definition: DebugInfo.h:182
@ LLVMDIBasicTypeMetadataKind
Definition: DebugInfo.h:172
@ LLVMConstantAsMetadataMetadataKind
Definition: DebugInfo.h:162
@ LLVMDIStringTypeMetadataKind
Definition: DebugInfo.h:193
@ LLVMDICommonBlockMetadataKind
Definition: DebugInfo.h:192
@ LLVMDILabelMetadataKind
Definition: DebugInfo.h:187
@ LLVMDISubprogramMetadataKind
Definition: DebugInfo.h:178
@ LLVMDISubroutineTypeMetadataKind
Definition: DebugInfo.h:175
@ LLVMDWARFEmissionLineTablesOnly
Definition: DebugInfo.h:154
@ LLVMDWARFEmissionFull
Definition: DebugInfo.h:153
@ LLVMDWARFEmissionNone
Definition: DebugInfo.h:152
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 ...