ee1dff5d8c467cd5c3599e90debdc566a2b088e9
[lldb.git] / llvm / include / llvm-c / DebugInfo.h
1 //===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 ///
10 /// This file declares the C API endpoints for generating DWARF Debug Info
11 ///
12 /// Note: This interface is experimental. It is *NOT* stable, and may be
13 ///       changed without warning.
14 ///
15 //===----------------------------------------------------------------------===//
16
17 #ifndef LLVM_C_DEBUGINFO_H
18 #define LLVM_C_DEBUGINFO_H
19
20 #include "llvm-c/Core.h"
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 /**
27  * Debug info flags.
28  */
29 typedef enum {
30   LLVMDIFlagZero = 0,
31   LLVMDIFlagPrivate = 1,
32   LLVMDIFlagProtected = 2,
33   LLVMDIFlagPublic = 3,
34   LLVMDIFlagFwdDecl = 1 << 2,
35   LLVMDIFlagAppleBlock = 1 << 3,
36   LLVMDIFlagBlockByrefStruct = 1 << 4,
37   LLVMDIFlagVirtual = 1 << 5,
38   LLVMDIFlagArtificial = 1 << 6,
39   LLVMDIFlagExplicit = 1 << 7,
40   LLVMDIFlagPrototyped = 1 << 8,
41   LLVMDIFlagObjcClassComplete = 1 << 9,
42   LLVMDIFlagObjectPointer = 1 << 10,
43   LLVMDIFlagVector = 1 << 11,
44   LLVMDIFlagStaticMember = 1 << 12,
45   LLVMDIFlagLValueReference = 1 << 13,
46   LLVMDIFlagRValueReference = 1 << 14,
47   LLVMDIFlagReserved = 1 << 15,
48   LLVMDIFlagSingleInheritance = 1 << 16,
49   LLVMDIFlagMultipleInheritance = 2 << 16,
50   LLVMDIFlagVirtualInheritance = 3 << 16,
51   LLVMDIFlagIntroducedVirtual = 1 << 18,
52   LLVMDIFlagBitField = 1 << 19,
53   LLVMDIFlagNoReturn = 1 << 20,
54   LLVMDIFlagMainSubprogram = 1 << 21,
55   LLVMDIFlagTypePassByValue = 1 << 22,
56   LLVMDIFlagTypePassByReference = 1 << 23,
57   LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5),
58   LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected |
59                             LLVMDIFlagPublic,
60   LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance |
61                              LLVMDIFlagMultipleInheritance |
62                              LLVMDIFlagVirtualInheritance
63 } LLVMDIFlags;
64
65 /**
66  * Source languages known by DWARF.
67  */
68 typedef enum {
69   LLVMDWARFSourceLanguageC89,
70   LLVMDWARFSourceLanguageC,
71   LLVMDWARFSourceLanguageAda83,
72   LLVMDWARFSourceLanguageC_plus_plus,
73   LLVMDWARFSourceLanguageCobol74,
74   LLVMDWARFSourceLanguageCobol85,
75   LLVMDWARFSourceLanguageFortran77,
76   LLVMDWARFSourceLanguageFortran90,
77   LLVMDWARFSourceLanguagePascal83,
78   LLVMDWARFSourceLanguageModula2,
79   // New in DWARF v3:
80   LLVMDWARFSourceLanguageJava,
81   LLVMDWARFSourceLanguageC99,
82   LLVMDWARFSourceLanguageAda95,
83   LLVMDWARFSourceLanguageFortran95,
84   LLVMDWARFSourceLanguagePLI,
85   LLVMDWARFSourceLanguageObjC,
86   LLVMDWARFSourceLanguageObjC_plus_plus,
87   LLVMDWARFSourceLanguageUPC,
88   LLVMDWARFSourceLanguageD,
89   // New in DWARF v4:
90   LLVMDWARFSourceLanguagePython,
91   // New in DWARF v5:
92   LLVMDWARFSourceLanguageOpenCL,
93   LLVMDWARFSourceLanguageGo,
94   LLVMDWARFSourceLanguageModula3,
95   LLVMDWARFSourceLanguageHaskell,
96   LLVMDWARFSourceLanguageC_plus_plus_03,
97   LLVMDWARFSourceLanguageC_plus_plus_11,
98   LLVMDWARFSourceLanguageOCaml,
99   LLVMDWARFSourceLanguageRust,
100   LLVMDWARFSourceLanguageC11,
101   LLVMDWARFSourceLanguageSwift,
102   LLVMDWARFSourceLanguageJulia,
103   LLVMDWARFSourceLanguageDylan,
104   LLVMDWARFSourceLanguageC_plus_plus_14,
105   LLVMDWARFSourceLanguageFortran03,
106   LLVMDWARFSourceLanguageFortran08,
107   LLVMDWARFSourceLanguageRenderScript,
108   LLVMDWARFSourceLanguageBLISS,
109   // Vendor extensions:
110   LLVMDWARFSourceLanguageMips_Assembler,
111   LLVMDWARFSourceLanguageGOOGLE_RenderScript,
112   LLVMDWARFSourceLanguageBORLAND_Delphi
113 } LLVMDWARFSourceLanguage;
114
115 /**
116  * The amount of debug information to emit.
117  */
118 typedef enum {
119     LLVMDWARFEmissionNone = 0,
120     LLVMDWARFEmissionFull,
121     LLVMDWARFEmissionLineTablesOnly
122 } LLVMDWARFEmissionKind;
123
124 /**
125  * An LLVM DWARF type encoding.
126  */
127 typedef unsigned LLVMDWARFTypeEncoding;
128
129 /**
130  * The current debug metadata version number.
131  */
132 unsigned LLVMDebugMetadataVersion(void);
133
134 /**
135  * The version of debug metadata that's present in the provided \c Module.
136  */
137 unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module);
138
139 /**
140  * Strip debug info in the module if it exists.
141  * To do this, we remove all calls to the debugger intrinsics and any named
142  * metadata for debugging. We also remove debug locations for instructions.
143  * Return true if module is modified.
144  */
145 LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module);
146
147 /**
148  * Construct a builder for a module, and do not allow for unresolved nodes
149  * attached to the module.
150  */
151 LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M);
152
153 /**
154  * Construct a builder for a module and collect unresolved nodes attached
155  * to the module in order to resolve cycles during a call to
156  * \c LLVMDIBuilderFinalize.
157  */
158 LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M);
159
160 /**
161  * Deallocates the \c DIBuilder and everything it owns.
162  * @note You must call \c LLVMDIBuilderFinalize before this
163  */
164 void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder);
165
166 /**
167  * Construct any deferred debug info descriptors.
168  */
169 void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder);
170
171 /**
172  * A CompileUnit provides an anchor for all debugging
173  * information generated during this instance of compilation.
174  * \param Lang          Source programming language, eg.
175  *                      \c LLVMDWARFSourceLanguageC99
176  * \param FileRef       File info.
177  * \param Producer      Identify the producer of debugging information
178  *                      and code.  Usually this is a compiler
179  *                      version string.
180  * \param ProducerLen   The length of the C string passed to \c Producer.
181  * \param isOptimized   A boolean flag which indicates whether optimization
182  *                      is enabled or not.
183  * \param Flags         This string lists command line options. This
184  *                      string is directly embedded in debug info
185  *                      output which may be used by a tool
186  *                      analyzing generated debugging information.
187  * \param FlagsLen      The length of the C string passed to \c Flags.
188  * \param RuntimeVer    This indicates runtime version for languages like
189  *                      Objective-C.
190  * \param SplitName     The name of the file that we'll split debug info
191  *                      out into.
192  * \param SplitNameLen  The length of the C string passed to \c SplitName.
193  * \param Kind          The kind of debug information to generate.
194  * \param DWOId         The DWOId if this is a split skeleton compile unit.
195  * \param SplitDebugInlining    Whether to emit inline debug info.
196  * \param DebugInfoForProfiling Whether to emit extra debug info for
197  *                              profile collection.
198  */
199 LLVMMetadataRef LLVMDIBuilderCreateCompileUnit(
200     LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang,
201     LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen,
202     LLVMBool isOptimized, const char *Flags, size_t FlagsLen,
203     unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen,
204     LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining,
205     LLVMBool DebugInfoForProfiling);
206
207 /**
208  * Create a file descriptor to hold debugging information for a file.
209  * \param Builder      The \c DIBuilder.
210  * \param Filename     File name.
211  * \param FilenameLen  The length of the C string passed to \c Filename.
212  * \param Directory    Directory.
213  * \param DirectoryLen The length of the C string passed to \c Directory.
214  */
215 LLVMMetadataRef
216 LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename,
217                         size_t FilenameLen, const char *Directory,
218                         size_t DirectoryLen);
219
220 /**
221  * Creates a new DebugLocation that describes a source location.
222  * \param Line The line in the source file.
223  * \param Column The column in the source file.
224  * \param Scope The scope in which the location resides.
225  * \param InlinedAt The scope where this location was inlined, if at all.
226  *                  (optional).
227  * \note If the item to which this location is attached cannot be
228  *       attributed to a source line, pass 0 for the line and column.
229  */
230 LLVMMetadataRef
231 LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line,
232                                  unsigned Column, LLVMMetadataRef Scope,
233                                  LLVMMetadataRef InlinedAt);
234
235 /**
236  * Create subroutine type.
237  * \param File            The file in which the subroutine resides.
238  * \param ParameterTypes  An array of subroutine parameter types. This
239  *                        includes return type at 0th index.
240  * \param NumParameterTypes The number of parameter types in \c ParameterTypes
241  * \param Flags           E.g.: \c LLVMDIFlagLValueReference.
242  *                        These flags are used to emit dwarf attributes.
243  */
244 LLVMMetadataRef
245 LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder,
246                                   LLVMMetadataRef File,
247                                   LLVMMetadataRef *ParameterTypes,
248                                   unsigned NumParameterTypes,
249                                   LLVMDIFlags Flags);
250
251 /**
252  * Create debugging information entry for an enumeration.
253  * \param Builder        The DIBuilder.
254  * \param Scope          Scope in which this enumeration is defined.
255  * \param Name           Enumeration name.
256  * \param NameLen        Length of enumeration name.
257  * \param File           File where this member is defined.
258  * \param LineNumber     Line number.
259  * \param SizeInBits     Member size.
260  * \param AlignInBits    Member alignment.
261  * \param Elements       Enumeration elements.
262  * \param NumElements    Number of enumeration elements.
263  * \param UnderlyingType Underlying type of a C++11/ObjC fixed enum.
264  * \param UniqueIdentifier A unique identifier for the enum.
265  */
266 LLVMMetadataRef LLVMDIBuilderCreateEnumerationType(
267     LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
268     size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
269     unsigned SizeInBits, unsigned AlignInBits, LLVMMetadataRef *Elements,
270     unsigned NumElements, LLVMMetadataRef ClassTy);
271
272 /**
273  * Create debugging information entry for a union.
274  * \param Builder      The DIBuilder.
275  * \param Scope        Scope in which this union is defined.
276  * \param Name         Union name.
277  * \param NameLen      Length of union name.
278  * \param File         File where this member is defined.
279  * \param LineNumber   Line number.
280  * \param SizeInBits   Member size.
281  * \param AlignInBits  Member alignment.
282  * \param Flags        Flags to encode member attribute, e.g. private
283  * \param Elements     Union elements.
284  * \param NumElements  Number of union elements.
285  * \param RunTimeLang  Optional parameter, Objective-C runtime version.
286  * \param UniqueIdentifier A unique identifier for the union.
287  * \param UniqueIdentifierLen Length of unique identifier.
288  */
289 LLVMMetadataRef LLVMDIBuilderCreateUnionType(
290     LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
291     size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
292     unsigned SizeInBits, unsigned AlignInBits, LLVMDIFlags Flags,
293     LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang,
294      const char *UniqueId, size_t UniqueIdLen);
295
296
297 /**
298  * Create debugging information entry for an array.
299  * \param Builder      The DIBuilder.
300  * \param Size         Array size.
301  * \param AlignInBits  Alignment.
302  * \param Ty           Element type.
303  * \param Subscripts   Subscripts.
304  */
305 LLVMMetadataRef
306 LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Builder, unsigned Size,
307                              unsigned AlignInBits, LLVMMetadataRef Ty,
308                              LLVMMetadataRef *Subscripts,
309                              unsigned NumSubscripts);
310
311 /**
312  * Create debugging information entry for a vector type.
313  * \param Builder      The DIBuilder.
314  * \param Size         Vector size.
315  * \param AlignInBits  Alignment.
316  * \param Ty           Element type.
317  * \param Subscripts   Subscripts.
318  */
319 LLVMMetadataRef
320 LLVMDIBuilderCreateVectorType(LLVMDIBuilderRef Builder, unsigned Size,
321                               unsigned AlignInBits, LLVMMetadataRef Ty,
322                               LLVMMetadataRef *Subscripts,
323                               unsigned NumSubscripts);
324
325 /**
326  * Create a DWARF unspecified type.
327  * \param Builder   The DIBuilder.
328  * \param Name      The unspecified type's name.
329  * \param NameLen   Length of type name.
330  */
331 LLVMMetadataRef
332 LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name,
333                                    size_t NameLen);
334
335 /**
336  * Create debugging information entry for a basic
337  * type.
338  * \param Builder     The DIBuilder.
339  * \param Name        Type name.
340  * \param Name        Length of type name.
341  * \param SizeInBits  Size of the type.
342  * \param Encoding    DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float.
343  */
344 LLVMMetadataRef
345 LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const char *Name,
346                              size_t NameLen, unsigned SizeInBits,
347                              LLVMDWARFTypeEncoding Encoding);
348
349 /**
350  * Create debugging information entry for a pointer.
351  * \param Builder     The DIBuilder.
352  * \param PointeeTy         Type pointed by this pointer.
353  * \param SizeInBits        Size.
354  * \param AlignInBits       Alignment. (optional, pass 0 to ignore)
355  * \param DWARFAddressSpace DWARF address space. (optional, pass 0 to ignore)
356  * \param Name              Pointer type name. (optional)
357  * \param Name              Length of pointer type name. (optional)
358  */
359 LLVMMetadataRef LLVMDIBuilderCreatePointerType(
360     LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy,
361     unsigned SizeInBits, unsigned AlignInBits, unsigned AddressSpace,
362     const char *Name, size_t NameLen);
363
364 /**
365  * Create debugging information entry for a struct.
366  * \param Builder     The DIBuilder.
367  * \param Scope        Scope in which this struct is defined.
368  * \param Name         Struct name.
369  * \param Name         Struct name length.
370  * \param File         File where this member is defined.
371  * \param LineNumber   Line number.
372  * \param SizeInBits   Member size.
373  * \param AlignInBits  Member alignment.
374  * \param Flags        Flags to encode member attribute, e.g. private
375  * \param Elements     Struct elements.
376  * \param RunTimeLang  Optional parameter, Objective-C runtime version.
377  * \param VTableHolder The object containing the vtable for the struct.
378  * \param UniqueIdentifier A unique identifier for the struct.
379  * \param UniqueIdentifierLen Length of the unique identifier for the struct.
380  */
381 LLVMMetadataRef LLVMDIBuilderCreateStructType(
382     LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
383     size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
384     unsigned SizeInBits, unsigned AlignInBits, LLVMDIFlags Flags,
385     LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements,
386     unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder,
387     const char *UniqueId, size_t UniqueIdLen);
388
389 /**
390  * Create debugging information entry for a member.
391  * \param Builder      The DIBuilder.
392  * \param Scope        Member scope.
393  * \param Name         Member name.
394  * \param File         File where this member is defined.
395  * \param LineNo       Line number.
396  * \param SizeInBits   Member size.
397  * \param AlignInBits  Member alignment.
398  * \param OffsetInBits Member offset.
399  * \param Flags        Flags to encode member attribute, e.g. private
400  * \param Ty           Parent type.
401  */
402 LLVMMetadataRef LLVMDIBuilderCreateMemberType(
403     LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
404     size_t NameLen, LLVMMetadataRef File, unsigned LineNo,
405     unsigned SizeInBits, unsigned AlignInBits, unsigned OffsetInBits,
406     LLVMDIFlags Flags, LLVMMetadataRef Ty);
407
408 /**
409  * Create debugging information entry for a
410  * C++ static data member.
411  * \param Builder      The DIBuilder.
412  * \param Scope        Member scope.
413  * \param Name         Member name.
414  * \param Name         Length of member name.
415  * \param File         File where this member is declared.
416  * \param LineNo       Line number.
417  * \param Ty           Type of the static member.
418  * \param Flags        Flags to encode member attribute, e.g. private.
419  * \param Val          Const initializer of the member.
420  * \param AlignInBits  Member alignment.
421  */
422 LLVMMetadataRef
423 LLVMDIBuilderCreateStaticMemberType(
424     LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name,
425     size_t NameLen, LLVMMetadataRef File, unsigned LineNumber,
426     LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal,
427     unsigned AlignInBits);
428
429 /**
430  * Create debugging information entry for a pointer to member.
431  * \param Builder      The DIBuilder.
432  * \param PointeeType Type pointed to by this pointer.
433  * \param Class Type for which this pointer points to members of.
434  * \param SizeInBits  Size.
435  * \param AlignInBits Alignment. (optional)
436  * \param Flags Flags.
437  */
438 LLVMMetadataRef
439 LLVMDIBuilderCreateMemberPointerType(LLVMDIBuilderRef Builder,
440                                      LLVMMetadataRef PointeeType,
441                                      LLVMMetadataRef ClassType,
442                                      unsigned SizeInBits,
443                                      unsigned AlignInBits,
444                                      LLVMDIFlags Flags);
445
446 /**
447  * Create a new DIType* with the "object pointer"
448  * flag set.
449  * \param Builder   The DIBuilder.
450  * \param Type      The underlying type to which this pointer points.
451  */
452 LLVMMetadataRef
453 LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder,
454                                      LLVMMetadataRef Type);
455
456 /**
457  * Create debugging information entry for a qualified
458  * type, e.g. 'const int'.
459  * \param Tag         Tag identifing type,
460  *                    e.g. LLVMDWARFTypeQualifier_volatile_type
461  * \param FromTy      Base Type.
462  */
463 LLVMMetadataRef
464 LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag,
465                                  LLVMMetadataRef Type);
466
467 /**
468  * Create debugging information entry for a c++
469  * style reference or rvalue reference type.
470  */
471 LLVMMetadataRef
472 LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag,
473                                  LLVMMetadataRef Type);
474
475 /**
476  * Create C++11 nullptr type.
477  * \param Builder   The DIBuilder.
478  */
479 LLVMMetadataRef
480 LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder);
481
482 /**
483  * Create a temporary forward-declared type.
484  * \param Builder   The DIBuilder.
485  * \param Tag       A unique tag for this type.
486  * \param Name      Type name.
487  * \param NameLen   Length of type name.
488  * \param Scope     Type scope.
489  * \param File      File where this type is defined.
490  * \param Line      Line number where this type is defined.
491  */
492 LLVMMetadataRef
493 LLVMDIBuilderCreateReplaceableCompositeType(
494     LLVMDIBuilderRef Builder, unsigned Tag, const char *Name,
495     size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
496     unsigned RuntimeLang, unsigned SizeInBits, unsigned AlignInBits,
497     LLVMDIFlags Flags, const char *UniqueIdentifier,
498     size_t UniqueIdentifierLen);
499
500 /**
501  * Create debugging information entry for a bit field member.
502  * \param Builder             The DIBuilder.
503  * \param Scope               Member scope.
504  * \param Name                Member name.
505  * \param NameLen             Length of member name.
506  * \param File                File where this member is defined.
507  * \param LineNo              Line number.
508  * \param SizeInBits          Member size.
509  * \param OffsetInBits        Member offset.
510  * \param StorageOffsetInBits Member storage offset.
511  * \param Flags               Flags to encode member attribute.
512  * \param Type                Parent type.
513  */
514 LLVMMetadataRef
515 LLVMDIBuilderCreateBitFieldMemberType(LLVMDIBuilderRef Builder,
516                                       LLVMMetadataRef Scope,
517                                       const char *Name, size_t NameLen,
518                                       LLVMMetadataRef File, unsigned LineNumber,
519                                       unsigned SizeInBits,
520                                       unsigned OffsetInBits,
521                                       unsigned StorageOffsetInBits,
522                                       LLVMDIFlags Flags, LLVMMetadataRef Type);
523
524 /**
525  * Create debugging information entry for a class.
526  * \param Scope        Scope in which this class is defined.
527  * \param Name         class name.
528  * \param File         File where this member is defined.
529  * \param LineNumber   Line number.
530  * \param SizeInBits   Member size.
531  * \param AlignInBits  Member alignment.
532  * \param OffsetInBits Member offset.
533  * \param Flags        Flags to encode member attribute, e.g. private
534  * \param Elements     class members.
535  * \param DerivedFrom  Debug info of the base class of this type.
536  * \param TemplateParms Template type parameters.
537  */
538 LLVMMetadataRef LLVMDIBuilderCreateClassType(LLVMDIBuilderRef Builder,
539     LLVMMetadataRef Scope, const char *Name, size_t NameLen,
540     LLVMMetadataRef File, unsigned LineNumber, unsigned SizeInBits,
541     unsigned AlignInBits, unsigned OffsetInBits, LLVMDIFlags Flags,
542     LLVMMetadataRef *Elements, unsigned NumElements,
543     LLVMMetadataRef DerivedFrom, LLVMMetadataRef TemplateParamsNode);
544
545 /**
546  * Create a new DIType* with "artificial" flag set.
547  * \param Builder     The DIBuilder.
548  * \param Type        The underlying type.
549  */
550 LLVMMetadataRef
551 LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder,
552                                   LLVMMetadataRef Type);
553
554 #ifdef __cplusplus
555 } /* end extern "C" */
556 #endif
557
558 #endif