LLVM 17.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:
128 // Vendor extensions:
133
134/**
135 * The amount of debug information to emit.
136 */
137typedef enum {
142
143/**
144 * The kind of metadata nodes.
145 */
146enum {
183};
184typedef unsigned LLVMMetadataKind;
185
186/**
187 * An LLVM DWARF type encoding.
188 */
189typedef unsigned LLVMDWARFTypeEncoding;
190
191/**
192 * Describes the kind of macro declaration used for LLVMDIBuilderCreateMacro.
193 * @see llvm::dwarf::MacinfoRecordType
194 * @note Values are from DW_MACINFO_* constants in the DWARF specification.
195 */
196typedef enum {
203
204/**
205 * The current debug metadata version number.
206 */
207unsigned LLVMDebugMetadataVersion(void);
208
209/**
210 * The version of debug metadata that's present in the provided \c Module.
211 */
213
214/**
215 * Strip debug info in the module if it exists.
216 * To do this, we remove all calls to the debugger intrinsics and any named
217 * metadata for debugging. We also remove debug locations for instructions.
218 * Return true if module is modified.
219 */
221
222/**
223 * Construct a builder for a module, and do not allow for unresolved nodes
224 * attached to the module.
225 */
227
228/**
229 * Construct a builder for a module and collect unresolved nodes attached
230 * to the module in order to resolve cycles during a call to
231 * \c LLVMDIBuilderFinalize.
232 */
234
235/**
236 * Deallocates the \c DIBuilder and everything it owns.
237 * @note You must call \c LLVMDIBuilderFinalize before this
238 */
240
241/**
242 * Construct any deferred debug info descriptors.
243 */
245
246/**
247 * Finalize a specific subprogram.
248 * No new variables may be added to this subprogram afterwards.
249 */
251 LLVMMetadataRef Subprogram);
252
253/**
254 * A CompileUnit provides an anchor for all debugging
255 * information generated during this instance of compilation.
256 * \param Lang Source programming language, eg.
257 * \c LLVMDWARFSourceLanguageC99
258 * \param FileRef File info.
259 * \param Producer Identify the producer of debugging information
260 * and code. Usually this is a compiler
261 * version string.
262 * \param ProducerLen The length of the C string passed to \c Producer.
263 * \param isOptimized A boolean flag which indicates whether optimization
264 * is enabled or not.
265 * \param Flags This string lists command line options. This
266 * string is directly embedded in debug info
267 * output which may be used by a tool
268 * analyzing generated debugging information.
269 * \param FlagsLen The length of the C string passed to \c Flags.
270 * \param RuntimeVer This indicates runtime version for languages like
271 * Objective-C.
272 * \param SplitName The name of the file that we'll split debug info
273 * out into.
274 * \param SplitNameLen The length of the C string passed to \c SplitName.
275 * \param Kind The kind of debug information to generate.
276 * \param DWOId The DWOId if this is a split skeleton compile unit.
277 * \param SplitDebugInlining Whether to emit inline debug info.
278 * \param DebugInfoForProfiling Whether to emit extra debug info for
279 * profile collection.
280 * \param SysRoot The Clang system root (value of -isysroot).
281 * \param SysRootLen The length of the C string passed to \c SysRoot.
282 * \param SDK The SDK. On Darwin, the last component of the sysroot.
283 * \param SDKLen The length of the C string passed to \c SDK.
284 */
287 LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,
288 LLVMBool isOptimized, const char *Flags, size_t FlagsLen,
289 unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen,
290 LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining,
291 LLVMBool DebugInfoForProfiling, const char *SysRoot, size_t SysRootLen,
292 const char *SDK, size_t SDKLen);
293
294/**
295 * Create a file descriptor to hold debugging information for a file.
296 * \param Builder The \c DIBuilder.
297 * \param Filename File name.
298 * \param FilenameLen The length of the C string passed to \c Filename.
299 * \param Directory Directory.
300 * \param DirectoryLen The length of the C string passed to \c Directory.
301 */
303LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
304 size_t FilenameLen, const char *Directory,
305 size_t DirectoryLen);
306
307/**
308 * Creates a new descriptor for a module with the specified parent scope.
309 * \param Builder The \c DIBuilder.
310 * \param ParentScope The parent scope containing this module declaration.
311 * \param Name Module name.
312 * \param NameLen The length of the C string passed to \c Name.
313 * \param ConfigMacros A space-separated shell-quoted list of -D macro
314 definitions as they would appear on a command line.
315 * \param ConfigMacrosLen The length of the C string passed to \c ConfigMacros.
316 * \param IncludePath The path to the module map file.
317 * \param IncludePathLen The length of the C string passed to \c IncludePath.
318 * \param APINotesFile The path to an API notes file for the module.
319 * \param APINotesFileLen The length of the C string passed to \c APINotestFile.
320 */
323 const char *Name, size_t NameLen,
324 const char *ConfigMacros, size_t ConfigMacrosLen,
325 const char *IncludePath, size_t IncludePathLen,
326 const char *APINotesFile, size_t APINotesFileLen);
327
328/**
329 * Creates a new descriptor for a namespace with the specified parent scope.
330 * \param Builder The \c DIBuilder.
331 * \param ParentScope The parent scope containing this module declaration.
332 * \param Name NameSpace name.
333 * \param NameLen The length of the C string passed to \c Name.
334 * \param ExportSymbols Whether or not the namespace exports symbols, e.g.
335 * this is true of C++ inline namespaces.
336 */
339 LLVMMetadataRef ParentScope,
340 const char *Name, size_t NameLen,
341 LLVMBool ExportSymbols);
342
343/**
344 * Create a new descriptor for the specified subprogram.
345 * \param Builder The \c DIBuilder.
346 * \param Scope Function scope.
347 * \param Name Function name.
348 * \param NameLen Length of enumeration name.
349 * \param LinkageName Mangled function name.
350 * \param LinkageNameLen Length of linkage name.
351 * \param File File where this variable is defined.
352 * \param LineNo Line number.
353 * \param Ty Function type.
354 * \param IsLocalToUnit True if this function is not externally visible.
355 * \param IsDefinition True if this is a function definition.
356 * \param ScopeLine Set to the beginning of the scope this starts
357 * \param Flags E.g.: \c LLVMDIFlagLValueReference. These flags are
358 * used to emit dwarf attributes.
359 * \param IsOptimized True if optimization is ON.
360 */
362 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
363 size_t NameLen, const char *LinkageName, size_t LinkageNameLen,
364 LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
365 LLVMBool IsLocalToUnit, LLVMBool IsDefinition,
366 unsigned ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized);
367
368/**
369 * Create a descriptor for a lexical block with the specified parent context.
370 * \param Builder The \c DIBuilder.
371 * \param Scope Parent lexical block.
372 * \param File Source file.
373 * \param Line The line in the source file.
374 * \param Column The column in the source file.
375 */
377 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope,
378 LLVMMetadataRef File, unsigned Line, unsigned Column);
379
380/**
381 * Create a descriptor for a lexical block with a new file attached.
382 * \param Builder The \c DIBuilder.
383 * \param Scope Lexical block.
384 * \param File Source file.
385 * \param Discriminator DWARF path discriminator value.
386 */
389 LLVMMetadataRef Scope,
390 LLVMMetadataRef File,
391 unsigned Discriminator);
392
393/**
394 * Create a descriptor for an imported namespace. Suitable for e.g. C++
395 * using declarations.
396 * \param Builder The \c DIBuilder.
397 * \param Scope The scope this module is imported into
398 * \param File File where the declaration is located.
399 * \param Line Line number of the declaration.
400 */
403 LLVMMetadataRef Scope,
405 LLVMMetadataRef File,
406 unsigned Line);
407
408/**
409 * Create a descriptor for an imported module that aliases another
410 * imported entity descriptor.
411 * \param Builder The \c DIBuilder.
412 * \param Scope The scope this module is imported into
413 * \param ImportedEntity Previous imported entity to alias.
414 * \param File File where the declaration is located.
415 * \param Line Line number of the declaration.
416 * \param Elements Renamed elements.
417 * \param NumElements Number of renamed elements.
418 */
420 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope,
421 LLVMMetadataRef ImportedEntity, LLVMMetadataRef File, unsigned Line,
422 LLVMMetadataRef *Elements, unsigned NumElements);
423
424/**
425 * Create a descriptor for an imported module.
426 * \param Builder The \c DIBuilder.
427 * \param Scope The scope this module is imported into
428 * \param M The module being imported here
429 * \param File File where the declaration is located.
430 * \param Line Line number of the declaration.
431 * \param Elements Renamed elements.
432 * \param NumElements Number of renamed elements.
433 */
436 LLVMMetadataRef File, unsigned Line, LLVMMetadataRef *Elements,
437 unsigned NumElements);
438
439/**
440 * Create a descriptor for an imported function, type, or variable. Suitable
441 * for e.g. FORTRAN-style USE declarations.
442 * \param Builder The DIBuilder.
443 * \param Scope The scope this module is imported into.
444 * \param Decl The declaration (or definition) of a function, type,
445 or variable.
446 * \param File File where the declaration is located.
447 * \param Line Line number of the declaration.
448 * \param Name A name that uniquely identifies this imported
449 declaration.
450 * \param NameLen The length of the C string passed to \c Name.
451 * \param Elements Renamed elements.
452 * \param NumElements Number of renamed elements.
453 */
456 LLVMMetadataRef File, unsigned Line, const char *Name, size_t NameLen,
457 LLVMMetadataRef *Elements, unsigned NumElements);
458
459/**
460 * Creates a new DebugLocation that describes a source location.
461 * \param Line The line in the source file.
462 * \param Column The column in the source file.
463 * \param Scope The scope in which the location resides.
464 * \param InlinedAt The scope where this location was inlined, if at all.
465 * (optional).
466 * \note If the item to which this location is attached cannot be
467 * attributed to a source line, pass 0 for the line and column.
468 */
471 unsigned Column, LLVMMetadataRef Scope,
472 LLVMMetadataRef InlinedAt);
473
474/**
475 * Get the line number of this debug location.
476 * \param Location The debug location.
477 *
478 * @see DILocation::getLine()
479 */
480unsigned LLVMDILocationGetLine(LLVMMetadataRef Location);
481
482/**
483 * Get the column number of this debug location.
484 * \param Location The debug location.
485 *
486 * @see DILocation::getColumn()
487 */
489
490/**
491 * Get the local scope associated with this debug location.
492 * \param Location The debug location.
493 *
494 * @see DILocation::getScope()
495 */
497
498/**
499 * Get the "inline at" location associated with this debug location.
500 * \param Location The debug location.
501 *
502 * @see DILocation::getInlinedAt()
503 */
505
506/**
507 * Get the metadata of the file associated with a given scope.
508 * \param Scope The scope object.
509 *
510 * @see DIScope::getFile()
511 */
513
514/**
515 * Get the directory of a given file.
516 * \param File The file object.
517 * \param Len The length of the returned string.
518 *
519 * @see DIFile::getDirectory()
520 */
521const char *LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len);
522
523/**
524 * Get the name of a given file.
525 * \param File The file object.
526 * \param Len The length of the returned string.
527 *
528 * @see DIFile::getFilename()
529 */
530const char *LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len);
531
532/**
533 * Get the source of a given file.
534 * \param File The file object.
535 * \param Len The length of the returned string.
536 *
537 * @see DIFile::getSource()
538 */
539const char *LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len);
540
541/**
542 * Create a type array.
543 * \param Builder The DIBuilder.
544 * \param Data The type elements.
545 * \param NumElements Number of type elements.
546 */
549 size_t NumElements);
550
551/**
552 * Create subroutine type.
553 * \param Builder The DIBuilder.
554 * \param File The file in which the subroutine resides.
555 * \param ParameterTypes An array of subroutine parameter types. This
556 * includes return type at 0th index.
557 * \param NumParameterTypes The number of parameter types in \c ParameterTypes
558 * \param Flags E.g.: \c LLVMDIFlagLValueReference.
559 * These flags are used to emit dwarf attributes.
560 */
563 LLVMMetadataRef File,
564 LLVMMetadataRef *ParameterTypes,
565 unsigned NumParameterTypes,
567
568/**
569 * Create debugging information entry for a macro.
570 * @param Builder The DIBuilder.
571 * @param ParentMacroFile Macro parent (could be NULL).
572 * @param Line Source line number where the macro is defined.
573 * @param RecordType DW_MACINFO_define or DW_MACINFO_undef.
574 * @param Name Macro name.
575 * @param NameLen Macro name length.
576 * @param Value Macro value.
577 * @param ValueLen Macro value length.
578 */
580 LLVMMetadataRef ParentMacroFile,
581 unsigned Line,
583 const char *Name, size_t NameLen,
584 const char *Value, size_t ValueLen);
585
586/**
587 * Create debugging information temporary entry for a macro file.
588 * List of macro node direct children will be calculated by DIBuilder,
589 * using the \p ParentMacroFile relationship.
590 * @param Builder The DIBuilder.
591 * @param ParentMacroFile Macro parent (could be NULL).
592 * @param Line Source line number where the macro file is included.
593 * @param File File descriptor containing the name of the macro file.
594 */
597 LLVMMetadataRef ParentMacroFile, unsigned Line,
598 LLVMMetadataRef File);
599
600/**
601 * Create debugging information entry for an enumerator.
602 * @param Builder The DIBuilder.
603 * @param Name Enumerator name.
604 * @param NameLen Length of enumerator name.
605 * @param Value Enumerator value.
606 * @param IsUnsigned True if the value is unsigned.
607 */
609 const char *Name, size_t NameLen,
610 int64_t Value,
611 LLVMBool IsUnsigned);
612
613/**
614 * Create debugging information entry for an enumeration.
615 * \param Builder The DIBuilder.
616 * \param Scope Scope in which this enumeration is defined.
617 * \param Name Enumeration name.
618 * \param NameLen Length of enumeration name.
619 * \param File File where this member is defined.
620 * \param LineNumber Line number.
621 * \param SizeInBits Member size.
622 * \param AlignInBits Member alignment.
623 * \param Elements Enumeration elements.
624 * \param NumElements Number of enumeration elements.
625 * \param ClassTy Underlying type of a C++11/ObjC fixed enum.
626 */
628 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
629 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
630 uint64_t SizeInBits, uint32_t AlignInBits, LLVMMetadataRef *Elements,
631 unsigned NumElements, LLVMMetadataRef ClassTy);
632
633/**
634 * Create debugging information entry for a union.
635 * \param Builder The DIBuilder.
636 * \param Scope Scope in which this union is defined.
637 * \param Name Union name.
638 * \param NameLen Length of union name.
639 * \param File File where this member is defined.
640 * \param LineNumber Line number.
641 * \param SizeInBits Member size.
642 * \param AlignInBits Member alignment.
643 * \param Flags Flags to encode member attribute, e.g. private
644 * \param Elements Union elements.
645 * \param NumElements Number of union elements.
646 * \param RunTimeLang Optional parameter, Objective-C runtime version.
647 * \param UniqueId A unique identifier for the union.
648 * \param UniqueIdLen Length of unique identifier.
649 */
651 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
652 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
653 uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
654 LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang,
655 const char *UniqueId, size_t UniqueIdLen);
656
657
658/**
659 * Create debugging information entry for an array.
660 * \param Builder The DIBuilder.
661 * \param Size Array size.
662 * \param AlignInBits Alignment.
663 * \param Ty Element type.
664 * \param Subscripts Subscripts.
665 * \param NumSubscripts Number of subscripts.
666 */
669 uint32_t AlignInBits, LLVMMetadataRef Ty,
670 LLVMMetadataRef *Subscripts,
671 unsigned NumSubscripts);
672
673/**
674 * Create debugging information entry for a vector type.
675 * \param Builder The DIBuilder.
676 * \param Size Vector size.
677 * \param AlignInBits Alignment.
678 * \param Ty Element type.
679 * \param Subscripts Subscripts.
680 * \param NumSubscripts Number of subscripts.
681 */
684 uint32_t AlignInBits, LLVMMetadataRef Ty,
685 LLVMMetadataRef *Subscripts,
686 unsigned NumSubscripts);
687
688/**
689 * Create a DWARF unspecified type.
690 * \param Builder The DIBuilder.
691 * \param Name The unspecified type's name.
692 * \param NameLen Length of type name.
693 */
696 size_t NameLen);
697
698/**
699 * Create debugging information entry for a basic
700 * type.
701 * \param Builder The DIBuilder.
702 * \param Name Type name.
703 * \param NameLen Length of type name.
704 * \param SizeInBits Size of the type.
705 * \param Encoding DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float.
706 * \param Flags Flags to encode optional attribute like endianity
707 */
710 size_t NameLen, uint64_t SizeInBits,
711 LLVMDWARFTypeEncoding Encoding,
713
714/**
715 * Create debugging information entry for a pointer.
716 * \param Builder The DIBuilder.
717 * \param PointeeTy Type pointed by this pointer.
718 * \param SizeInBits Size.
719 * \param AlignInBits Alignment. (optional, pass 0 to ignore)
720 * \param AddressSpace DWARF address space. (optional, pass 0 to ignore)
721 * \param Name Pointer type name. (optional)
722 * \param NameLen Length of pointer type name. (optional)
723 */
725 LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy,
726 uint64_t SizeInBits, uint32_t AlignInBits, unsigned AddressSpace,
727 const char *Name, size_t NameLen);
728
729/**
730 * Create debugging information entry for a struct.
731 * \param Builder The DIBuilder.
732 * \param Scope Scope in which this struct is defined.
733 * \param Name Struct name.
734 * \param NameLen Struct name length.
735 * \param File File where this member is defined.
736 * \param LineNumber Line number.
737 * \param SizeInBits Member size.
738 * \param AlignInBits Member alignment.
739 * \param Flags Flags to encode member attribute, e.g. private
740 * \param Elements Struct elements.
741 * \param NumElements Number of struct elements.
742 * \param RunTimeLang Optional parameter, Objective-C runtime version.
743 * \param VTableHolder The object containing the vtable for the struct.
744 * \param UniqueId A unique identifier for the struct.
745 * \param UniqueIdLen Length of the unique identifier for the struct.
746 */
748 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
749 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
750 uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags,
751 LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements,
752 unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder,
753 const char *UniqueId, size_t UniqueIdLen);
754
755/**
756 * Create debugging information entry for a member.
757 * \param Builder The DIBuilder.
758 * \param Scope Member scope.
759 * \param Name Member name.
760 * \param NameLen Length of member name.
761 * \param File File where this member is defined.
762 * \param LineNo Line number.
763 * \param SizeInBits Member size.
764 * \param AlignInBits Member alignment.
765 * \param OffsetInBits Member offset.
766 * \param Flags Flags to encode member attribute, e.g. private
767 * \param Ty Parent type.
768 */
770 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
771 size_t NameLen, LLVMMetadataRef File, unsigned LineNo,
772 uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
774
775/**
776 * Create debugging information entry for a
777 * C++ static data member.
778 * \param Builder The DIBuilder.
779 * \param Scope Member scope.
780 * \param Name Member name.
781 * \param NameLen Length of member name.
782 * \param File File where this member is declared.
783 * \param LineNumber Line number.
784 * \param Type Type of the static member.
785 * \param Flags Flags to encode member attribute, e.g. private.
786 * \param ConstantVal Const initializer of the member.
787 * \param AlignInBits Member alignment.
788 */
791 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
792 size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
794 uint32_t AlignInBits);
795
796/**
797 * Create debugging information entry for a pointer to member.
798 * \param Builder The DIBuilder.
799 * \param PointeeType Type pointed to by this pointer.
800 * \param ClassType Type for which this pointer points to members of.
801 * \param SizeInBits Size.
802 * \param AlignInBits Alignment.
803 * \param Flags Flags.
804 */
807 LLVMMetadataRef PointeeType,
808 LLVMMetadataRef ClassType,
809 uint64_t SizeInBits,
810 uint32_t AlignInBits,
812/**
813 * Create debugging information entry for Objective-C instance variable.
814 * \param Builder The DIBuilder.
815 * \param Name Member name.
816 * \param NameLen The length of the C string passed to \c Name.
817 * \param File File where this member is defined.
818 * \param LineNo Line number.
819 * \param SizeInBits Member size.
820 * \param AlignInBits Member alignment.
821 * \param OffsetInBits Member offset.
822 * \param Flags Flags to encode member attribute, e.g. private
823 * \param Ty Parent type.
824 * \param PropertyNode Property associated with this ivar.
825 */
828 const char *Name, size_t NameLen,
829 LLVMMetadataRef File, unsigned LineNo,
830 uint64_t SizeInBits, uint32_t AlignInBits,
831 uint64_t OffsetInBits, LLVMDIFlags Flags,
832 LLVMMetadataRef Ty, LLVMMetadataRef PropertyNode);
833
834/**
835 * Create debugging information entry for Objective-C property.
836 * \param Builder The DIBuilder.
837 * \param Name Property name.
838 * \param NameLen The length of the C string passed to \c Name.
839 * \param File File where this property is defined.
840 * \param LineNo Line number.
841 * \param GetterName Name of the Objective C property getter selector.
842 * \param GetterNameLen The length of the C string passed to \c GetterName.
843 * \param SetterName Name of the Objective C property setter selector.
844 * \param SetterNameLen The length of the C string passed to \c SetterName.
845 * \param PropertyAttributes Objective C property attributes.
846 * \param Ty Type.
847 */
850 const char *Name, size_t NameLen,
851 LLVMMetadataRef File, unsigned LineNo,
852 const char *GetterName, size_t GetterNameLen,
853 const char *SetterName, size_t SetterNameLen,
854 unsigned PropertyAttributes,
855 LLVMMetadataRef Ty);
856
857/**
858 * Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set.
859 * \param Builder The DIBuilder.
860 * \param Type The underlying type to which this pointer points.
861 */
865
866/**
867 * Create debugging information entry for a qualified
868 * type, e.g. 'const int'.
869 * \param Builder The DIBuilder.
870 * \param Tag Tag identifying type,
871 * e.g. LLVMDWARFTypeQualifier_volatile_type
872 * \param Type Base Type.
873 */
877
878/**
879 * Create debugging information entry for a c++
880 * style reference or rvalue reference type.
881 * \param Builder The DIBuilder.
882 * \param Tag Tag identifying type,
883 * \param Type Base Type.
884 */
888
889/**
890 * Create C++11 nullptr type.
891 * \param Builder The DIBuilder.
892 */
895
896/**
897 * Create debugging information entry for a typedef.
898 * \param Builder The DIBuilder.
899 * \param Type Original type.
900 * \param Name Typedef name.
901 * \param File File where this type is defined.
902 * \param LineNo Line number.
903 * \param Scope The surrounding context for the typedef.
904 */
907 const char *Name, size_t NameLen,
908 LLVMMetadataRef File, unsigned LineNo,
909 LLVMMetadataRef Scope, uint32_t AlignInBits);
910
911/**
912 * Create debugging information entry to establish inheritance relationship
913 * between two types.
914 * \param Builder The DIBuilder.
915 * \param Ty Original type.
916 * \param BaseTy Base type. Ty is inherits from base.
917 * \param BaseOffset Base offset.
918 * \param VBPtrOffset Virtual base pointer offset.
919 * \param Flags Flags to describe inheritance attribute, e.g. private
920 */
924 uint64_t BaseOffset, uint32_t VBPtrOffset,
926
927/**
928 * Create a permanent forward-declared type.
929 * \param Builder The DIBuilder.
930 * \param Tag A unique tag for this type.
931 * \param Name Type name.
932 * \param NameLen Length of type name.
933 * \param Scope Type scope.
934 * \param File File where this type is defined.
935 * \param Line Line number where this type is defined.
936 * \param RuntimeLang Indicates runtime version for languages like
937 * Objective-C.
938 * \param SizeInBits Member size.
939 * \param AlignInBits Member alignment.
940 * \param UniqueIdentifier A unique identifier for the type.
941 * \param UniqueIdentifierLen Length of the unique identifier.
942 */
944 LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
945 size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
946 unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
947 const char *UniqueIdentifier, size_t UniqueIdentifierLen);
948
949/**
950 * Create a temporary forward-declared type.
951 * \param Builder The DIBuilder.
952 * \param Tag A unique tag for this type.
953 * \param Name Type name.
954 * \param NameLen Length of type name.
955 * \param Scope Type scope.
956 * \param File File where this type is defined.
957 * \param Line Line number where this type is defined.
958 * \param RuntimeLang Indicates runtime version for languages like
959 * Objective-C.
960 * \param SizeInBits Member size.
961 * \param AlignInBits Member alignment.
962 * \param Flags Flags.
963 * \param UniqueIdentifier A unique identifier for the type.
964 * \param UniqueIdentifierLen Length of the unique identifier.
965 */
968 LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
969 size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
970 unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits,
971 LLVMDIFlags Flags, const char *UniqueIdentifier,
972 size_t UniqueIdentifierLen);
973
974/**
975 * Create debugging information entry for a bit field member.
976 * \param Builder The DIBuilder.
977 * \param Scope Member scope.
978 * \param Name Member name.
979 * \param NameLen Length of member name.
980 * \param File File where this member is defined.
981 * \param LineNumber Line number.
982 * \param SizeInBits Member size.
983 * \param OffsetInBits Member offset.
984 * \param StorageOffsetInBits Member storage offset.
985 * \param Flags Flags to encode member attribute.
986 * \param Type Parent type.
987 */
990 LLVMMetadataRef Scope,
991 const char *Name, size_t NameLen,
992 LLVMMetadataRef File, unsigned LineNumber,
993 uint64_t SizeInBits,
994 uint64_t OffsetInBits,
995 uint64_t StorageOffsetInBits,
997
998/**
999 * Create debugging information entry for a class.
1000 * \param Scope Scope in which this class is defined.
1001 * \param Name Class name.
1002 * \param NameLen The length of the C string passed to \c Name.
1003 * \param File File where this member is defined.
1004 * \param LineNumber Line number.
1005 * \param SizeInBits Member size.
1006 * \param AlignInBits Member alignment.
1007 * \param OffsetInBits Member offset.
1008 * \param Flags Flags to encode member attribute, e.g. private.
1009 * \param DerivedFrom Debug info of the base class of this type.
1010 * \param Elements Class members.
1011 * \param NumElements Number of class elements.
1012 * \param VTableHolder Debug info of the base class that contains vtable
1013 * for this type. This is used in
1014 * DW_AT_containing_type. See DWARF documentation
1015 * for more info.
1016 * \param TemplateParamsNode Template type parameters.
1017 * \param UniqueIdentifier A unique identifier for the type.
1018 * \param UniqueIdentifierLen Length of the unique identifier.
1019 */
1021 LLVMMetadataRef Scope, const char *Name, size_t NameLen,
1022 LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits,
1023 uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags,
1024 LLVMMetadataRef DerivedFrom,
1025 LLVMMetadataRef *Elements, unsigned NumElements,
1026 LLVMMetadataRef VTableHolder, LLVMMetadataRef TemplateParamsNode,
1027 const char *UniqueIdentifier, size_t UniqueIdentifierLen);
1028
1029/**
1030 * Create a uniqued DIType* clone with FlagArtificial set.
1031 * \param Builder The DIBuilder.
1032 * \param Type The underlying type.
1033 */
1037
1038/**
1039 * Get the name of this DIType.
1040 * \param DType The DIType.
1041 * \param Length The length of the returned string.
1042 *
1043 * @see DIType::getName()
1044 */
1045const char *LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length);
1046
1047/**
1048 * Get the size of this DIType in bits.
1049 * \param DType The DIType.
1050 *
1051 * @see DIType::getSizeInBits()
1052 */
1054
1055/**
1056 * Get the offset of this DIType in bits.
1057 * \param DType The DIType.
1058 *
1059 * @see DIType::getOffsetInBits()
1060 */
1062
1063/**
1064 * Get the alignment of this DIType in bits.
1065 * \param DType The DIType.
1066 *
1067 * @see DIType::getAlignInBits()
1068 */
1070
1071/**
1072 * Get the source line where this DIType is declared.
1073 * \param DType The DIType.
1074 *
1075 * @see DIType::getLine()
1076 */
1077unsigned LLVMDITypeGetLine(LLVMMetadataRef DType);
1078
1079/**
1080 * Get the flags associated with this DIType.
1081 * \param DType The DIType.
1082 *
1083 * @see DIType::getFlags()
1084 */
1086
1087/**
1088 * Create a descriptor for a value range.
1089 * \param Builder The DIBuilder.
1090 * \param LowerBound Lower bound of the subrange, e.g. 0 for C, 1 for Fortran.
1091 * \param Count Count of elements in the subrange.
1092 */
1094 int64_t LowerBound,
1095 int64_t Count);
1096
1097/**
1098 * Create an array of DI Nodes.
1099 * \param Builder The DIBuilder.
1100 * \param Data The DI Node elements.
1101 * \param NumElements Number of DI Node elements.
1102 */
1105 size_t NumElements);
1106
1107/**
1108 * Create a new descriptor for the specified variable which has a complex
1109 * address expression for its address.
1110 * \param Builder The DIBuilder.
1111 * \param Addr An array of complex address operations.
1112 * \param Length Length of the address operation array.
1113 */
1115 uint64_t *Addr, size_t Length);
1116
1117/**
1118 * Create a new descriptor for the specified variable that does not have an
1119 * address, but does have a constant value.
1120 * \param Builder The DIBuilder.
1121 * \param Value The constant value.
1122 */
1125 uint64_t Value);
1126
1127/**
1128 * Create a new descriptor for the specified variable.
1129 * \param Scope Variable scope.
1130 * \param Name Name of the variable.
1131 * \param NameLen The length of the C string passed to \c Name.
1132 * \param Linkage Mangled name of the variable.
1133 * \param LinkLen The length of the C string passed to \c Linkage.
1134 * \param File File where this variable is defined.
1135 * \param LineNo Line number.
1136 * \param Ty Variable Type.
1137 * \param LocalToUnit Boolean flag indicate whether this variable is
1138 * externally visible or not.
1139 * \param Expr The location of the global relative to the attached
1140 * GlobalVariable.
1141 * \param Decl Reference to the corresponding declaration.
1142 * variables.
1143 * \param AlignInBits Variable alignment(or 0 if no alignment attr was
1144 * specified)
1145 */
1147 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1148 size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File,
1149 unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
1150 LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits);
1151
1152
1153/**
1154 * Get the dwarf::Tag of a DINode
1155 */
1157
1158/**
1159 * Retrieves the \c DIVariable associated with this global variable expression.
1160 * \param GVE The global variable expression.
1161 *
1162 * @see llvm::DIGlobalVariableExpression::getVariable()
1163 */
1165
1166/**
1167 * Retrieves the \c DIExpression associated with this global variable expression.
1168 * \param GVE The global variable expression.
1169 *
1170 * @see llvm::DIGlobalVariableExpression::getExpression()
1171 */
1173 LLVMMetadataRef GVE);
1174
1175/**
1176 * Get the metadata of the file associated with a given variable.
1177 * \param Var The variable object.
1178 *
1179 * @see DIVariable::getFile()
1180 */
1182
1183/**
1184 * Get the metadata of the scope associated with a given variable.
1185 * \param Var The variable object.
1186 *
1187 * @see DIVariable::getScope()
1188 */
1190
1191/**
1192 * Get the source line where this \c DIVariable is declared.
1193 * \param Var The DIVariable.
1194 *
1195 * @see DIVariable::getLine()
1196 */
1198
1199/**
1200 * Create a new temporary \c MDNode. Suitable for use in constructing cyclic
1201 * \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd,
1202 * and must be manually deleted with \c LLVMDisposeTemporaryMDNode.
1203 * \param Ctx The context in which to construct the temporary node.
1204 * \param Data The metadata elements.
1205 * \param NumElements Number of metadata elements.
1206 */
1208 size_t NumElements);
1209
1210/**
1211 * Deallocate a temporary node.
1212 *
1213 * Calls \c replaceAllUsesWith(nullptr) before deleting, so any remaining
1214 * references will be reset.
1215 * \param TempNode The temporary metadata node.
1216 */
1218
1219/**
1220 * Replace all uses of temporary metadata.
1221 * \param TempTargetMetadata The temporary metadata node.
1222 * \param Replacement The replacement metadata node.
1223 */
1224void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata,
1225 LLVMMetadataRef Replacement);
1226
1227/**
1228 * Create a new descriptor for the specified global variable that is temporary
1229 * and meant to be RAUWed.
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 LnkLen 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 Decl Reference to the corresponding declaration.
1241 * \param AlignInBits Variable alignment(or 0 if no alignment attr was
1242 * specified)
1243 */
1245 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1246 size_t NameLen, const char *Linkage, size_t LnkLen, LLVMMetadataRef File,
1247 unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit,
1248 LLVMMetadataRef Decl, uint32_t AlignInBits);
1249
1250/**
1251 * Insert a new llvm.dbg.declare intrinsic call before the given instruction.
1252 * \param Builder The DIBuilder.
1253 * \param Storage The storage of the variable to declare.
1254 * \param VarInfo The variable's debug info descriptor.
1255 * \param Expr A complex location expression for the variable.
1256 * \param DebugLoc Debug info location.
1257 * \param Instr Instruction acting as a location for the new intrinsic.
1258 */
1260 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1261 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr);
1262
1263/**
1264 * Insert a new llvm.dbg.declare intrinsic call at the end of the given basic
1265 * block. If the basic block has a terminator instruction, the intrinsic is
1266 * inserted before that terminator instruction.
1267 * \param Builder The DIBuilder.
1268 * \param Storage The storage of the variable to declare.
1269 * \param VarInfo The variable's debug info descriptor.
1270 * \param Expr A complex location expression for the variable.
1271 * \param DebugLoc Debug info location.
1272 * \param Block Basic block acting as a location for the new intrinsic.
1273 */
1275 LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo,
1276 LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block);
1277
1278/**
1279 * Insert a new llvm.dbg.value intrinsic call before the given instruction.
1280 * \param Builder The DIBuilder.
1281 * \param Val The value of the variable.
1282 * \param VarInfo The variable's debug info descriptor.
1283 * \param Expr A complex location expression for the variable.
1284 * \param DebugLoc Debug info location.
1285 * \param Instr Instruction acting as a location for the new intrinsic.
1286 */
1288 LLVMValueRef Val,
1289 LLVMMetadataRef VarInfo,
1290 LLVMMetadataRef Expr,
1291 LLVMMetadataRef DebugLoc,
1292 LLVMValueRef Instr);
1293
1294/**
1295 * Insert a new llvm.dbg.value intrinsic call at the end of the given basic
1296 * block. If the basic block has a terminator instruction, the intrinsic is
1297 * inserted before that terminator instruction.
1298 * \param Builder The DIBuilder.
1299 * \param Val The value of the variable.
1300 * \param VarInfo The variable's debug info descriptor.
1301 * \param Expr A complex location expression for the variable.
1302 * \param DebugLoc Debug info location.
1303 * \param Block Basic block acting as a location for the new intrinsic.
1304 */
1306 LLVMValueRef Val,
1307 LLVMMetadataRef VarInfo,
1308 LLVMMetadataRef Expr,
1309 LLVMMetadataRef DebugLoc,
1310 LLVMBasicBlockRef Block);
1311
1312/**
1313 * Create a new descriptor for a local auto variable.
1314 * \param Builder The DIBuilder.
1315 * \param Scope The local scope the variable is declared in.
1316 * \param Name Variable name.
1317 * \param NameLen Length of variable name.
1318 * \param File File where this variable is defined.
1319 * \param LineNo Line number.
1320 * \param Ty Metadata describing the type of the variable.
1321 * \param AlwaysPreserve If true, this descriptor will survive optimizations.
1322 * \param Flags Flags.
1323 * \param AlignInBits Variable alignment.
1324 */
1326 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1327 size_t NameLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty,
1328 LLVMBool AlwaysPreserve, LLVMDIFlags Flags, uint32_t AlignInBits);
1329
1330/**
1331 * Create a new descriptor for a function parameter variable.
1332 * \param Builder The DIBuilder.
1333 * \param Scope The local scope the variable is declared in.
1334 * \param Name Variable name.
1335 * \param NameLen Length of variable name.
1336 * \param ArgNo Unique argument number for this variable; starts at 1.
1337 * \param File File where this variable is defined.
1338 * \param LineNo Line number.
1339 * \param Ty Metadata describing the type of the variable.
1340 * \param AlwaysPreserve If true, this descriptor will survive optimizations.
1341 * \param Flags Flags.
1342 */
1344 LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
1345 size_t NameLen, unsigned ArgNo, LLVMMetadataRef File, unsigned LineNo,
1346 LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags);
1347
1348/**
1349 * Get the metadata of the subprogram attached to a function.
1350 *
1351 * @see llvm::Function::getSubprogram()
1352 */
1354
1355/**
1356 * Set the subprogram attached to a function.
1357 *
1358 * @see llvm::Function::setSubprogram()
1359 */
1361
1362/**
1363 * Get the line associated with a given subprogram.
1364 * \param Subprogram The subprogram object.
1365 *
1366 * @see DISubprogram::getLine()
1367 */
1368unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram);
1369
1370/**
1371 * Get the debug location for the given instruction.
1372 *
1373 * @see llvm::Instruction::getDebugLoc()
1374 */
1376
1377/**
1378 * Set the debug location for the given instruction.
1379 *
1380 * To clear the location metadata of the given instruction, pass NULL to \p Loc.
1381 *
1382 * @see llvm::Instruction::setDebugLoc()
1383 */
1385
1386/**
1387 * Obtain the enumerated type of a Metadata instance.
1388 *
1389 * @see llvm::Metadata::getMetadataID()
1390 */
1392
1393/**
1394 * @}
1395 */
1396
1398
1399#endif
RelocType Type
Definition: COFFYAML.cpp:390
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
@ Flags
Definition: TextStubV5.cpp:93
@ Data
Definition: TextStubV5.cpp:111
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:1345
LLVMMetadataRef LLVMDILocationGetInlinedAt(LLVMMetadataRef Location)
Get the "inline at" location associated with this debug location.
Definition: DebugInfo.cpp:1174
LLVMValueRef LLVMDIBuilderInsertDbgValueAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Insert a new llvm.dbg.value intrinsic call at the end of the given basic block.
Definition: DebugInfo.cpp:1651
LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Builder, LLVMMetadataRef *Data, size_t NumElements)
Create an array of DI Nodes.
Definition: DebugInfo.cpp:1688
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:1231
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:1128
LLVMMetadataRef LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder, LLVMMetadataRef Type)
Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set.
Definition: DebugInfo.cpp:1373
uint64_t LLVMDITypeGetSizeInBits(LLVMMetadataRef DType)
Get the size of this DIType in bits.
Definition: DebugInfo.cpp:1508
LLVMDWARFMacinfoRecordType
Describes the kind of macro declaration used for LLVMDIBuilderCreateMacro.
Definition: DebugInfo.h:196
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:1070
LLVMValueRef LLVMDIBuilderInsertDbgValueBefore(LLVMDIBuilderRef Builder, LLVMValueRef Val, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Insert a new llvm.dbg.value intrinsic call before the given instruction.
Definition: DebugInfo.cpp:1639
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:1457
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE)
Retrieves the DIVariable associated with this global variable expression.
Definition: DebugInfo.cpp:1571
LLVMMetadataRef LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder, LLVMMetadataRef Type)
Create a uniqued DIType* clone with FlagArtificial set.
Definition: DebugInfo.cpp:1493
void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder)
Construct any deferred debug info descriptors.
Definition: DebugInfo.cpp:1012
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:1094
unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram)
Get the line associated with a given subprogram.
Definition: DebugInfo.cpp:1703
LLVMMetadataRef LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name, size_t NameLen)
Create a DWARF unspecified type.
Definition: DebugInfo.cpp:1326
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:1062
LLVMMetadataRef LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line, unsigned Column, LLVMMetadataRef Scope, LLVMMetadataRef InlinedAt)
Creates a new DebugLocation that describes a source location.
Definition: DebugInfo.cpp:1155
uint32_t LLVMDITypeGetAlignInBits(LLVMMetadataRef DType)
Get the alignment of this DIType in bits.
Definition: DebugInfo.cpp:1516
LLVMMetadataRef LLVMDIGlobalVariableExpressionGetExpression(LLVMMetadataRef GVE)
Retrieves the DIExpression associated with this global variable expression.
Definition: DebugInfo.cpp:1575
LLVMMetadataRef LLVMDIVariableGetScope(LLVMMetadataRef Var)
Get the metadata of the scope associated with a given variable.
Definition: DebugInfo.cpp:1584
LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst)
Get the debug location for the given instruction.
Definition: DebugInfo.cpp:1707
LLVMMetadataRef LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag, LLVMMetadataRef Type)
Create debugging information entry for a c++ style reference or rvalue reference type.
Definition: DebugInfo.cpp:1432
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:1050
LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M)
Construct a builder for a module, and do not allow for unresolved nodes attached to the module.
Definition: DebugInfo.cpp:992
void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP)
Set the subprogram attached to a function.
Definition: DebugInfo.cpp:1699
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:1683
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:996
void LLVMDisposeTemporaryMDNode(LLVMMetadataRef TempNode)
Deallocate a temporary node.
Definition: DebugInfo.cpp:1598
LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location)
Get the local scope associated with this debug location.
Definition: DebugInfo.cpp:1170
LLVMMetadataRef LLVMDIBuilderCreateImportedModuleFromNamespace(LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, LLVMMetadataRef NS, LLVMMetadataRef File, unsigned Line)
Create a descriptor for an imported namespace.
Definition: DebugInfo.cpp:1104
LLVMMetadataRef LLVMDIBuilderCreateTempMacroFile(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentMacroFile, unsigned Line, LLVMMetadataRef File)
Create debugging information temporary entry for a macro file.
Definition: DebugInfo.cpp:1216
void LLVMInstructionSetDebugLoc(LLVMValueRef Inst, LLVMMetadataRef Loc)
Set the debug location for the given instruction.
Definition: DebugInfo.cpp:1711
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:1223
LLVMValueRef LLVMDIBuilderInsertDeclareBefore(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr)
Insert a new llvm.dbg.declare intrinsic call before the given instruction.
Definition: DebugInfo.cpp:1621
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:1547
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:1270
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:1444
unsigned LLVMDILocationGetColumn(LLVMMetadataRef Location)
Get the column number of this debug location.
Definition: DebugInfo.cpp:1166
LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block)
Insert a new llvm.dbg.declare intrinsic call at the end of the given basic block.
Definition: DebugInfo.cpp:1630
LLVMDIFlags
Debug info flags.
Definition: DebugInfo.h:34
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:1663
LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data, size_t NumElements)
Create a new temporary MDNode.
Definition: DebugInfo.cpp:1592
LLVMDIFlags LLVMDITypeGetFlags(LLVMMetadataRef DType)
Get the flags associated with this DIType.
Definition: DebugInfo.cpp:1524
const char * LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len)
Get the directory of a given file.
Definition: DebugInfo.cpp:1182
void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata, LLVMMetadataRef Replacement)
Replace all uses of temporary metadata.
Definition: DebugInfo.cpp:1602
const char * LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len)
Get the name of a given file.
Definition: DebugInfo.cpp:1188
unsigned LLVMDebugMetadataVersion(void)
The current debug metadata version number.
Definition: DebugInfo.cpp:988
unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module)
The version of debug metadata that's present in the provided Module.
Definition: DebugInfo.cpp:1000
unsigned LLVMDITypeGetLine(LLVMMetadataRef DType)
Get the source line where this DIType is declared.
Definition: DebugInfo.cpp:1520
LLVMMetadataRef LLVMDIVariableGetFile(LLVMMetadataRef Var)
Get the metadata of the file associated with a given variable.
Definition: DebugInfo.cpp:1580
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:1115
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:1332
uint16_t LLVMGetDINodeTag(LLVMMetadataRef MD)
Get the dwarf::Tag of a DINode.
Definition: DebugInfo.cpp:1498
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:1559
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:1609
LLVMMetadataRef LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag, LLVMMetadataRef Type)
Create debugging information entry for a qualified type, e.g.
Definition: DebugInfo.cpp:1425
LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata)
Obtain the enumerated type of a Metadata instance.
Definition: DebugInfo.cpp:1718
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:1243
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:1399
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:1673
LLVMMetadataRef LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder, LLVMMetadataRef File, LLVMMetadataRef *ParameterTypes, unsigned NumParameterTypes, LLVMDIFlags Flags)
Create subroutine type.
Definition: DebugInfo.cpp:1536
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:1359
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:1203
LLVMDWARFEmissionKind
The amount of debug information to emit.
Definition: DebugInfo.h:137
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:1259
LLVMMetadataRef LLVMDIScopeGetFile(LLVMMetadataRef Scope)
Get the metadata of the file associated with a given scope.
Definition: DebugInfo.cpp:1178
void LLVMDIBuilderFinalizeSubprogram(LLVMDIBuilderRef Builder, LLVMMetadataRef Subprogram)
Finalize a specific subprogram.
Definition: DebugInfo.cpp:1016
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:1554
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:1472
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:1315
unsigned LLVMDILocationGetLine(LLVMMetadataRef Location)
Get the line number of this debug location.
Definition: DebugInfo.cpp:1162
LLVMMetadataRef LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder)
Create C++11 nullptr type.
Definition: DebugInfo.cpp:1439
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:1389
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:1021
LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module)
Strip debug info in the module if it exists.
Definition: DebugInfo.cpp:1004
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:1281
unsigned LLVMDIVariableGetLine(LLVMMetadataRef Var)
Get the source line where this DIVariable is declared.
Definition: DebugInfo.cpp:1588
unsigned LLVMDWARFTypeEncoding
An LLVM DWARF type encoding.
Definition: DebugInfo.h:189
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:1085
LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Builder, LLVMMetadataRef *Data, size_t NumElements)
Create a type array.
Definition: DebugInfo.cpp:1528
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:1411
const char * LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len)
Get the source of a given file.
Definition: DebugInfo.cpp:1194
uint64_t LLVMDITypeGetOffsetInBits(LLVMMetadataRef DType)
Get the offset of this DIType in bits.
Definition: DebugInfo.cpp:1512
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:1141
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:1042
const char * LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length)
Get the name of this DIType.
Definition: DebugInfo.cpp:1502
unsigned LLVMMetadataKind
Definition: DebugInfo.h:184
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:1379
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:1299
void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder)
Deallocates the DIBuilder and everything it owns.
Definition: DebugInfo.cpp:1008
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:1290
LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func)
Get the metadata of the subprogram attached to a function.
Definition: DebugInfo.cpp:1695
@ LLVMDWARFMacinfoRecordTypeStartFile
Definition: DebugInfo.h:199
@ LLVMDWARFMacinfoRecordTypeVendorExt
Definition: DebugInfo.h:201
@ LLVMDWARFMacinfoRecordTypeEndFile
Definition: DebugInfo.h:200
@ LLVMDWARFMacinfoRecordTypeMacro
Definition: DebugInfo.h:198
@ LLVMDWARFMacinfoRecordTypeDefine
Definition: DebugInfo.h:197
@ LLVMDWARFSourceLanguageBLISS
Definition: DebugInfo.h:118
@ LLVMDWARFSourceLanguageJava
Definition: DebugInfo.h:90
@ LLVMDWARFSourceLanguageGOOGLE_RenderScript
Definition: DebugInfo.h:130
@ LLVMDWARFSourceLanguageSwift
Definition: DebugInfo.h:111
@ LLVMDWARFSourceLanguageCobol74
Definition: DebugInfo.h:83
@ LLVMDWARFSourceLanguageUPC
Definition: DebugInfo.h:97
@ LLVMDWARFSourceLanguageFortran03
Definition: DebugInfo.h:115
@ LLVMDWARFSourceLanguageAda2005
Definition: DebugInfo.h:126
@ LLVMDWARFSourceLanguageDylan
Definition: DebugInfo.h:113
@ LLVMDWARFSourceLanguageC_plus_plus_17
Definition: DebugInfo.h:122
@ LLVMDWARFSourceLanguageC_plus_plus_14
Definition: DebugInfo.h:114
@ LLVMDWARFSourceLanguageC
Definition: DebugInfo.h:80
@ LLVMDWARFSourceLanguageC_plus_plus_20
Definition: DebugInfo.h:123
@ LLVMDWARFSourceLanguageAda95
Definition: DebugInfo.h:92
@ LLVMDWARFSourceLanguageD
Definition: DebugInfo.h:98
@ LLVMDWARFSourceLanguageAda2012
Definition: DebugInfo.h:127
@ LLVMDWARFSourceLanguageCobol85
Definition: DebugInfo.h:84
@ LLVMDWARFSourceLanguageKotlin
Definition: DebugInfo.h:119
@ LLVMDWARFSourceLanguageModula2
Definition: DebugInfo.h:88
@ LLVMDWARFSourceLanguageC_plus_plus
Definition: DebugInfo.h:82
@ LLVMDWARFSourceLanguageC99
Definition: DebugInfo.h:91
@ LLVMDWARFSourceLanguageOpenCL
Definition: DebugInfo.h:102
@ LLVMDWARFSourceLanguageRust
Definition: DebugInfo.h:109
@ LLVMDWARFSourceLanguageFortran90
Definition: DebugInfo.h:86
@ LLVMDWARFSourceLanguageJulia
Definition: DebugInfo.h:112
@ LLVMDWARFSourceLanguageModula3
Definition: DebugInfo.h:104
@ LLVMDWARFSourceLanguageGo
Definition: DebugInfo.h:103
@ LLVMDWARFSourceLanguageObjC
Definition: DebugInfo.h:95
@ LLVMDWARFSourceLanguageBORLAND_Delphi
Definition: DebugInfo.h:131
@ LLVMDWARFSourceLanguageFortran77
Definition: DebugInfo.h:85
@ LLVMDWARFSourceLanguageMips_Assembler
Definition: DebugInfo.h:129
@ LLVMDWARFSourceLanguageObjC_plus_plus
Definition: DebugInfo.h:96
@ LLVMDWARFSourceLanguageFortran08
Definition: DebugInfo.h:116
@ LLVMDWARFSourceLanguagePascal83
Definition: DebugInfo.h:87
@ LLVMDWARFSourceLanguagePLI
Definition: DebugInfo.h:94
@ LLVMDWARFSourceLanguageC17
Definition: DebugInfo.h:124
@ LLVMDWARFSourceLanguageC11
Definition: DebugInfo.h:110
@ LLVMDWARFSourceLanguageFortran95
Definition: DebugInfo.h:93
@ LLVMDWARFSourceLanguageC_plus_plus_03
Definition: DebugInfo.h:106
@ LLVMDWARFSourceLanguageFortran18
Definition: DebugInfo.h:125
@ LLVMDWARFSourceLanguageC89
Definition: DebugInfo.h:79
@ LLVMDWARFSourceLanguagePython
Definition: DebugInfo.h:100
@ LLVMDWARFSourceLanguageRenderScript
Definition: DebugInfo.h:117
@ LLVMDWARFSourceLanguageCrystal
Definition: DebugInfo.h:121
@ LLVMDWARFSourceLanguageOCaml
Definition: DebugInfo.h:108
@ LLVMDWARFSourceLanguageZig
Definition: DebugInfo.h:120
@ LLVMDWARFSourceLanguageHaskell
Definition: DebugInfo.h:105
@ LLVMDWARFSourceLanguageC_plus_plus_11
Definition: DebugInfo.h:107
@ LLVMDWARFSourceLanguageAda83
Definition: DebugInfo.h:81
@ LLVMDIFlagBigEndian
Definition: DebugInfo.h:65
@ LLVMDIFlagPrivate
Definition: DebugInfo.h:36
@ LLVMDIFlagPrototyped
Definition: DebugInfo.h:45
@ LLVMDIFlagBitField
Definition: DebugInfo.h:57
@ LLVMDIFlagObjcClassComplete
Definition: DebugInfo.h:46
@ LLVMDIFlagAccessibility
Definition: DebugInfo.h:68
@ LLVMDIFlagRValueReference
Definition: DebugInfo.h:51
@ LLVMDIFlagProtected
Definition: DebugInfo.h:37
@ LLVMDIFlagIntroducedVirtual
Definition: DebugInfo.h:56
@ LLVMDIFlagAppleBlock
Definition: DebugInfo.h:40
@ LLVMDIFlagTypePassByReference
Definition: DebugInfo.h:60
@ LLVMDIFlagFixedEnum
Definition: DebugInfo.h:62
@ LLVMDIFlagNoReturn
Definition: DebugInfo.h:58
@ LLVMDIFlagExplicit
Definition: DebugInfo.h:44
@ LLVMDIFlagMultipleInheritance
Definition: DebugInfo.h:54
@ LLVMDIFlagThunk
Definition: DebugInfo.h:63
@ LLVMDIFlagIndirectVirtualBase
Definition: DebugInfo.h:67
@ LLVMDIFlagLittleEndian
Definition: DebugInfo.h:66
@ LLVMDIFlagReservedBit4
Definition: DebugInfo.h:41
@ LLVMDIFlagArtificial
Definition: DebugInfo.h:43
@ LLVMDIFlagPublic
Definition: DebugInfo.h:38
@ LLVMDIFlagStaticMember
Definition: DebugInfo.h:49
@ LLVMDIFlagVector
Definition: DebugInfo.h:48
@ LLVMDIFlagPtrToMemberRep
Definition: DebugInfo.h:70
@ LLVMDIFlagVirtual
Definition: DebugInfo.h:42
@ LLVMDIFlagSingleInheritance
Definition: DebugInfo.h:53
@ LLVMDIFlagVirtualInheritance
Definition: DebugInfo.h:55
@ LLVMDIFlagReserved
Definition: DebugInfo.h:52
@ LLVMDIFlagTypePassByValue
Definition: DebugInfo.h:59
@ LLVMDIFlagEnumClass
Definition: DebugInfo.h:61
@ LLVMDIFlagFwdDecl
Definition: DebugInfo.h:39
@ LLVMDIFlagLValueReference
Definition: DebugInfo.h:50
@ LLVMDIFlagObjectPointer
Definition: DebugInfo.h:47
@ LLVMDIFlagNonTrivial
Definition: DebugInfo.h:64
@ LLVMDIFlagZero
Definition: DebugInfo.h:35
@ LLVMDWARFEmissionLineTablesOnly
Definition: DebugInfo.h:140
@ LLVMDWARFEmissionFull
Definition: DebugInfo.h:139
@ LLVMDWARFEmissionNone
Definition: DebugInfo.h:138
@ LLVMGenericDINodeMetadataKind
Definition: DebugInfo.h:155
@ LLVMDIDerivedTypeMetadataKind
Definition: DebugInfo.h:159
@ LLVMDIMacroMetadataKind
Definition: DebugInfo.h:176
@ LLVMDILexicalBlockMetadataKind
Definition: DebugInfo.h:165
@ LLVMMDTupleMetadataKind
Definition: DebugInfo.h:151
@ LLVMDIExpressionMetadataKind
Definition: DebugInfo.h:153
@ LLVMDIGlobalVariableExpressionMetadataKind
Definition: DebugInfo.h:154
@ LLVMLocalAsMetadataMetadataKind
Definition: DebugInfo.h:149
@ LLVMDILocalVariableMetadataKind
Definition: DebugInfo.h:172
@ LLVMDILocationMetadataKind
Definition: DebugInfo.h:152
@ LLVMDistinctMDOperandPlaceholderMetadataKind
Definition: DebugInfo.h:150
@ LLVMDILexicalBlockFileMetadataKind
Definition: DebugInfo.h:166
@ LLVMDIMacroFileMetadataKind
Definition: DebugInfo.h:177
@ LLVMDIArgListMetadataKind
Definition: DebugInfo.h:181
@ LLVMDITemplateTypeParameterMetadataKind
Definition: DebugInfo.h:169
@ LLVMDIImportedEntityMetadataKind
Definition: DebugInfo.h:175
@ LLVMDIGlobalVariableMetadataKind
Definition: DebugInfo.h:171
@ LLVMDIAssignIDMetadataKind
Definition: DebugInfo.h:182
@ LLVMDISubrangeMetadataKind
Definition: DebugInfo.h:156
@ LLVMDITemplateValueParameterMetadataKind
Definition: DebugInfo.h:170
@ LLVMDIObjCPropertyMetadataKind
Definition: DebugInfo.h:174
@ LLVMDINamespaceMetadataKind
Definition: DebugInfo.h:167
@ LLVMDIGenericSubrangeMetadataKind
Definition: DebugInfo.h:180
@ LLVMDICompileUnitMetadataKind
Definition: DebugInfo.h:163
@ LLVMDICompositeTypeMetadataKind
Definition: DebugInfo.h:160
@ LLVMMDStringMetadataKind
Definition: DebugInfo.h:147
@ LLVMDIEnumeratorMetadataKind
Definition: DebugInfo.h:157
@ LLVMDIFileMetadataKind
Definition: DebugInfo.h:162
@ LLVMDIModuleMetadataKind
Definition: DebugInfo.h:168
@ LLVMDIBasicTypeMetadataKind
Definition: DebugInfo.h:158
@ LLVMConstantAsMetadataMetadataKind
Definition: DebugInfo.h:148
@ LLVMDIStringTypeMetadataKind
Definition: DebugInfo.h:179
@ LLVMDICommonBlockMetadataKind
Definition: DebugInfo.h:178
@ LLVMDILabelMetadataKind
Definition: DebugInfo.h:173
@ LLVMDISubprogramMetadataKind
Definition: DebugInfo.h:164
@ LLVMDISubroutineTypeMetadataKind
Definition: DebugInfo.h:161
struct LLVMOpaqueValue * LLVMValueRef
Represents an individual value in LLVM IR.
Definition: Types.h:75
int LLVMBool
Definition: Types.h:28
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 ...