1 //===- DIBuilderBindings.h - Bindings for DIBuilder -------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines C bindings for the DIBuilder class.
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_BINDINGS_GO_LLVM_DIBUILDERBINDINGS_H
15 #define LLVM_BINDINGS_GO_LLVM_DIBUILDERBINDINGS_H
17 #include "IRBindings.h"
18 #include "llvm-c/Core.h"
24 // FIXME: These bindings shouldn't be Go-specific and should eventually move to
25 // a (somewhat) less stable collection of C APIs for use in creating bindings of
26 // LLVM in other languages.
28 typedef struct LLVMOpaqueDIBuilder *LLVMDIBuilderRef;
30 LLVMDIBuilderRef LLVMNewDIBuilder(LLVMModuleRef m);
32 void LLVMDIBuilderDestroy(LLVMDIBuilderRef d);
33 void LLVMDIBuilderFinalize(LLVMDIBuilderRef d);
36 LLVMDIBuilderCreateCompileUnit(LLVMDIBuilderRef D, unsigned Language,
37 const char *File, const char *Dir,
38 const char *Producer, int Optimized,
39 const char *Flags, unsigned RuntimeVersion);
41 LLVMMetadataRef LLVMDIBuilderCreateFile(LLVMDIBuilderRef D, const char *File,
44 LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(LLVMDIBuilderRef D,
45 LLVMMetadataRef Scope,
47 unsigned Line, unsigned Column);
49 LLVMMetadataRef LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef D,
50 LLVMMetadataRef Scope,
52 unsigned Discriminator);
54 LLVMMetadataRef LLVMDIBuilderCreateFunction(
55 LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name,
56 const char *LinkageName, LLVMMetadataRef File, unsigned Line,
57 LLVMMetadataRef CompositeType, int IsLocalToUnit, int IsDefinition,
58 unsigned ScopeLine, unsigned Flags, int IsOptimized, LLVMValueRef Function);
61 LLVMDIBuilderCreateAutoVariable(LLVMDIBuilderRef D, LLVMMetadataRef Scope,
62 const char *Name, LLVMMetadataRef File,
63 unsigned Line, LLVMMetadataRef Ty,
64 int AlwaysPreserve, unsigned Flags);
66 LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
67 LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name, unsigned ArgNo,
68 LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve,
71 LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef D,
77 LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef D,
78 LLVMMetadataRef PointeeType,
84 LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef D, LLVMMetadataRef File,
85 LLVMMetadataRef ParameterTypes);
87 LLVMMetadataRef LLVMDIBuilderCreateStructType(
88 LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name,
89 LLVMMetadataRef File, unsigned Line, uint64_t SizeInBits,
90 uint64_t AlignInBits, unsigned Flags, LLVMMetadataRef DerivedFrom,
91 LLVMMetadataRef ElementTypes);
93 LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(
94 LLVMDIBuilderRef D, unsigned Tag, const char *Name, LLVMMetadataRef Scope,
95 LLVMMetadataRef File, unsigned Line, unsigned RuntimeLang,
96 uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags);
99 LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef D, LLVMMetadataRef Scope,
100 const char *Name, LLVMMetadataRef File,
101 unsigned Line, uint64_t SizeInBits,
102 uint64_t AlignInBits, uint64_t OffsetInBits,
103 unsigned Flags, LLVMMetadataRef Ty);
105 LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef D,
107 uint64_t AlignInBits,
108 LLVMMetadataRef ElementType,
109 LLVMMetadataRef Subscripts);
111 LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef D,
112 LLVMMetadataRef Ty, const char *Name,
113 LLVMMetadataRef File, unsigned Line,
114 LLVMMetadataRef Context);
116 LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef D, int64_t Lo,
119 LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef D,
120 LLVMMetadataRef *Data,
123 LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef D,
124 LLVMMetadataRef *Data,
127 LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref,
128 int64_t *Addr, size_t Length);
130 LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef D,
131 LLVMValueRef Storage,
132 LLVMMetadataRef VarInfo,
133 LLVMMetadataRef Expr,
134 LLVMBasicBlockRef Block);
136 LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef D, LLVMValueRef Val,
138 LLVMMetadataRef VarInfo,
139 LLVMMetadataRef Expr,
140 LLVMBasicBlockRef Block);