Recommit r310809 with a fix for the spill problem
[llvm-core.git] / bindings / go / llvm / DIBuilderBindings.h
blobb097f2ec40059a92b65d1ac0a5616c20311f5a6a
1 //===- DIBuilderBindings.h - Bindings for DIBuilder -------------*- C++ -*-===//
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 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"
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
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);
35 LLVMMetadataRef
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,
42 const char *Dir);
44 LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock(LLVMDIBuilderRef D,
45 LLVMMetadataRef Scope,
46 LLVMMetadataRef File,
47 unsigned Line, unsigned Column);
49 LLVMMetadataRef LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef D,
50 LLVMMetadataRef Scope,
51 LLVMMetadataRef File,
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);
60 LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
61 LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name,
62 LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve,
63 unsigned Flags, uint32_t AlignInBits);
65 LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
66 LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name, unsigned ArgNo,
67 LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve,
68 unsigned Flags);
70 LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef D,
71 const char *Name,
72 uint64_t SizeInBits,
73 unsigned Encoding);
75 LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef D,
76 LLVMMetadataRef PointeeType,
77 uint64_t SizeInBits,
78 uint32_t AlignInBits,
79 const char *Name);
81 LLVMMetadataRef
82 LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef D, LLVMMetadataRef File,
83 LLVMMetadataRef ParameterTypes);
85 LLVMMetadataRef LLVMDIBuilderCreateStructType(
86 LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name,
87 LLVMMetadataRef File, unsigned Line, uint64_t SizeInBits,
88 uint32_t AlignInBits, unsigned Flags, LLVMMetadataRef DerivedFrom,
89 LLVMMetadataRef ElementTypes);
91 LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(
92 LLVMDIBuilderRef D, unsigned Tag, const char *Name, LLVMMetadataRef Scope,
93 LLVMMetadataRef File, unsigned Line, unsigned RuntimeLang,
94 uint64_t SizeInBits, uint32_t AlignInBits, unsigned Flags);
96 LLVMMetadataRef
97 LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef D, LLVMMetadataRef Scope,
98 const char *Name, LLVMMetadataRef File,
99 unsigned Line, uint64_t SizeInBits,
100 uint32_t AlignInBits, uint64_t OffsetInBits,
101 unsigned Flags, LLVMMetadataRef Ty);
103 LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef D,
104 uint64_t SizeInBits,
105 uint32_t AlignInBits,
106 LLVMMetadataRef ElementType,
107 LLVMMetadataRef Subscripts);
109 LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef D,
110 LLVMMetadataRef Ty, const char *Name,
111 LLVMMetadataRef File, unsigned Line,
112 LLVMMetadataRef Context);
114 LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef D, int64_t Lo,
115 int64_t Count);
117 LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef D,
118 LLVMMetadataRef *Data,
119 size_t Length);
121 LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef D,
122 LLVMMetadataRef *Data,
123 size_t Length);
125 LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref,
126 int64_t *Addr, size_t Length);
128 LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef D,
129 LLVMValueRef Storage,
130 LLVMMetadataRef VarInfo,
131 LLVMMetadataRef Expr,
132 LLVMBasicBlockRef Block);
134 LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef D, LLVMValueRef Val,
135 LLVMMetadataRef VarInfo,
136 LLVMMetadataRef Expr,
137 LLVMBasicBlockRef Block);
139 #ifdef __cplusplus
140 } // extern "C"
141 #endif
143 #endif