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
);
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
,
70 LLVMMetadataRef
LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef D
,
75 LLVMMetadataRef
LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef D
,
76 LLVMMetadataRef PointeeType
,
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
);
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
,
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
,
117 LLVMMetadataRef
LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef D
,
118 LLVMMetadataRef
*Data
,
121 LLVMMetadataRef
LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef D
,
122 LLVMMetadataRef
*Data
,
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
);