summaryrefslogtreecommitdiff
path: root/bindings
diff options
context:
space:
mode:
authorRobert Widmann <devteam.codafi@gmail.com>2018-04-22 19:24:44 +0000
committerRobert Widmann <devteam.codafi@gmail.com>2018-04-22 19:24:44 +0000
commitaec06286e37e51ee8f92f6cec66f4bf55dd03e38 (patch)
treef80cf70379308d3deae814f21ad70ec524aef121 /bindings
parent3070e9a666a0118ce293fde5b9500dcf7ad1f0c9 (diff)
[LLVM-C] Add DIBuilder Bindings For Variable Creation
Summary: Wrap LLVMDIBuilderCreateAutoVariable, LLVMDIBuilderCreateParameterVariable, LLVMDIBuilderCreateExpression, and move and correct LLVMDIBuilderInsertDeclareBefore and LLVMDIBuilderInsertDeclareAtEnd from the Go bindings to the C bindings. Reviewers: harlanhaskins, whitequark, deadalnix Reviewed By: harlanhaskins, whitequark Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D45928 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@330555 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings')
-rw-r--r--bindings/go/llvm/DIBuilderBindings.cpp43
-rw-r--r--bindings/go/llvm/DIBuilderBindings.h19
-rw-r--r--bindings/go/llvm/dibuilder.go14
3 files changed, 7 insertions, 69 deletions
diff --git a/bindings/go/llvm/DIBuilderBindings.cpp b/bindings/go/llvm/DIBuilderBindings.cpp
index d9ffee8a5f0..8855c0bf454 100644
--- a/bindings/go/llvm/DIBuilderBindings.cpp
+++ b/bindings/go/llvm/DIBuilderBindings.cpp
@@ -19,27 +19,6 @@
using namespace llvm;
-LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
- LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,
- LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve,
- unsigned Flags, uint32_t AlignInBits) {
- DIBuilder *D = unwrap(Dref);
- return wrap(
- D->createAutoVariable(unwrap<DIScope>(Scope), Name, unwrap<DIFile>(File),
- Line, unwrap<DIType>(Ty), AlwaysPreserve,
- static_cast<DINode::DIFlags>(Flags), AlignInBits));
-}
-
-LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
- LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,
- unsigned ArgNo, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty,
- int AlwaysPreserve, unsigned Flags) {
- DIBuilder *D = unwrap(Dref);
- return wrap(D->createParameterVariable(
- unwrap<DIScope>(Scope), Name, ArgNo, unwrap<DIFile>(File), Line,
- unwrap<DIType>(Ty), AlwaysPreserve, static_cast<DINode::DIFlags>(Flags)));
-}
-
LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Dref,
LLVMMetadataRef Ty, const char *Name,
LLVMMetadataRef File, unsigned Line,
@@ -76,28 +55,6 @@ LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Dref,
return wrap(A.get());
}
-LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref,
- int64_t *Addr, size_t Length) {
- DIBuilder *D = unwrap(Dref);
- return wrap(D->createExpression(ArrayRef<int64_t>(Addr, Length)));
-}
-
-LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef Dref,
- LLVMValueRef Storage,
- LLVMMetadataRef VarInfo,
- LLVMMetadataRef Expr,
- LLVMBasicBlockRef Block) {
- // Fail immediately here until the llgo folks update their bindings. The
- // called function is going to assert out anyway.
- llvm_unreachable("DIBuilder API change requires a DebugLoc");
-
- DIBuilder *D = unwrap(Dref);
- Instruction *Instr = D->insertDeclare(
- unwrap(Storage), unwrap<DILocalVariable>(VarInfo),
- unwrap<DIExpression>(Expr), /* DebugLoc */ nullptr, unwrap(Block));
- return wrap(Instr);
-}
-
LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef Dref,
LLVMValueRef Val,
LLVMMetadataRef VarInfo,
diff --git a/bindings/go/llvm/DIBuilderBindings.h b/bindings/go/llvm/DIBuilderBindings.h
index effc5d67692..4cb612c6b17 100644
--- a/bindings/go/llvm/DIBuilderBindings.h
+++ b/bindings/go/llvm/DIBuilderBindings.h
@@ -28,16 +28,6 @@ extern "C" {
typedef struct LLVMOpaqueDIBuilder *LLVMDIBuilderRef;
-LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
- LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name,
- LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve,
- unsigned Flags, uint32_t AlignInBits);
-
-LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
- LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name, unsigned ArgNo,
- LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve,
- unsigned Flags);
-
LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef D,
LLVMMetadataRef Ty, const char *Name,
LLVMMetadataRef File, unsigned Line,
@@ -54,15 +44,6 @@ LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef D,
LLVMMetadataRef *Data,
size_t Length);
-LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Dref,
- int64_t *Addr, size_t Length);
-
-LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd(LLVMDIBuilderRef D,
- LLVMValueRef Storage,
- LLVMMetadataRef VarInfo,
- LLVMMetadataRef Expr,
- LLVMBasicBlockRef Block);
-
LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef D, LLVMValueRef Val,
LLVMMetadataRef VarInfo,
LLVMMetadataRef Expr,
diff --git a/bindings/go/llvm/dibuilder.go b/bindings/go/llvm/dibuilder.go
index a7eed580650..fd915e70fd2 100644
--- a/bindings/go/llvm/dibuilder.go
+++ b/bindings/go/llvm/dibuilder.go
@@ -239,12 +239,12 @@ func (d *DIBuilder) CreateAutoVariable(scope Metadata, v DIAutoVariable) Metadat
result := C.LLVMDIBuilderCreateAutoVariable(
d.ref,
scope.C,
- name,
+ name, C.size_t(len(v.Name)),
v.File.C,
C.unsigned(v.Line),
v.Type.C,
- boolToCInt(v.AlwaysPreserve),
- C.unsigned(v.Flags),
+ C.LLVMBool(boolToCInt(v.AlwaysPreserve)),
+ C.LLVMDIFlags(v.Flags),
C.uint32_t(v.AlignInBits),
)
return Metadata{C: result}
@@ -271,13 +271,13 @@ func (d *DIBuilder) CreateParameterVariable(scope Metadata, v DIParameterVariabl
result := C.LLVMDIBuilderCreateParameterVariable(
d.ref,
scope.C,
- name,
+ name, C.size_t(len(v.Name)),
C.unsigned(v.ArgNo),
v.File.C,
C.unsigned(v.Line),
v.Type.C,
- boolToCInt(v.AlwaysPreserve),
- C.unsigned(v.Flags),
+ C.LLVMBool(boolToCInt(v.AlwaysPreserve)),
+ C.LLVMDIFlags(v.Flags),
)
return Metadata{C: result}
}
@@ -564,7 +564,7 @@ func (d *DIBuilder) CreateExpression(addr []int64) Metadata {
// InsertDeclareAtEnd inserts a call to llvm.dbg.declare at the end of the
// specified basic block for the given value and associated debug metadata.
func (d *DIBuilder) InsertDeclareAtEnd(v Value, diVarInfo, expr Metadata, bb BasicBlock) Value {
- result := C.LLVMDIBuilderInsertDeclareAtEnd(d.ref, v.C, diVarInfo.C, expr.C, bb.C)
+ result := C.LLVMDIBuilderInsertDeclareAtEnd(d.ref, v.C, diVarInfo.C, expr.C, nil, bb.C)
return Value{C: result}
}