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 "llvm-c/Core.h"
23 // FIXME: These bindings shouldn't be Go-specific and should eventually move to
24 // a (somewhat) less stable collection of C APIs for use in creating bindings of
25 // LLVM in other languages.
27 typedef struct LLVMOpaqueDIBuilder *LLVMDIBuilderRef;
29 LLVMDIBuilderRef LLVMNewDIBuilder(LLVMModuleRef m);
31 void LLVMDIBuilderDestroy(LLVMDIBuilderRef d);
32 void LLVMDIBuilderFinalize(LLVMDIBuilderRef d);
34 LLVMValueRef LLVMDIBuilderCreateCompileUnit(LLVMDIBuilderRef D,
35 unsigned Language, const char *File,
37 const char *Producer, int Optimized,
39 unsigned RuntimeVersion);
41 LLVMValueRef LLVMDIBuilderCreateFile(LLVMDIBuilderRef D, const char *File,
44 LLVMValueRef LLVMDIBuilderCreateLexicalBlock(LLVMDIBuilderRef D,
46 LLVMValueRef File, unsigned Line,
49 LLVMValueRef LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef D,
52 unsigned Discriminator);
54 LLVMValueRef LLVMDIBuilderCreateFunction(
55 LLVMDIBuilderRef D, LLVMValueRef Scope, const char *Name,
56 const char *LinkageName, LLVMValueRef File, unsigned Line,
57 LLVMValueRef CompositeType, int IsLocalToUnit, int IsDefinition,
58 unsigned ScopeLine, unsigned Flags, int IsOptimized, LLVMValueRef Function);
60 LLVMValueRef LLVMDIBuilderCreateLocalVariable(
61 LLVMDIBuilderRef D, unsigned Tag, LLVMValueRef Scope, const char *Name,
62 LLVMValueRef File, unsigned Line, LLVMValueRef Ty, int AlwaysPreserve,
63 unsigned Flags, unsigned ArgNo);
65 LLVMValueRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef D, const char *Name,
70 LLVMValueRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef D,
71 LLVMValueRef PointeeType,
76 LLVMValueRef LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef D,
78 LLVMValueRef ParameterTypes);
80 LLVMValueRef LLVMDIBuilderCreateStructType(
81 LLVMDIBuilderRef D, LLVMValueRef Scope, const char *Name, LLVMValueRef File,
82 unsigned Line, uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags,
83 LLVMValueRef DerivedFrom, LLVMValueRef ElementTypes);
85 LLVMValueRef LLVMDIBuilderCreateMemberType(
86 LLVMDIBuilderRef D, LLVMValueRef Scope, const char *Name, LLVMValueRef File,
87 unsigned Line, uint64_t SizeInBits, uint64_t AlignInBits,
88 uint64_t OffsetInBits, unsigned Flags, LLVMValueRef Ty);
90 LLVMValueRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef D,
93 LLVMValueRef ElementType,
94 LLVMValueRef Subscripts);
96 LLVMValueRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef D, LLVMValueRef Ty,
97 const char *Name, LLVMValueRef File,
98 unsigned Line, LLVMValueRef Context);
100 LLVMValueRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef D, int64_t Lo,
103 LLVMValueRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef D,
104 LLVMValueRef *Data, size_t Length);
106 LLVMValueRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef D,
110 LLVMValueRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref, int64_t *Addr,
113 LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef D,
114 LLVMValueRef Storage,
115 LLVMValueRef VarInfo,
117 LLVMBasicBlockRef Block);
119 LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef D,
122 LLVMValueRef VarInfo,
124 LLVMBasicBlockRef Block);