diff options
author | Robert Widmann <devteam.codafi@gmail.com> | 2018-04-22 19:24:44 +0000 |
---|---|---|
committer | Robert Widmann <devteam.codafi@gmail.com> | 2018-04-22 19:24:44 +0000 |
commit | aec06286e37e51ee8f92f6cec66f4bf55dd03e38 (patch) | |
tree | f80cf70379308d3deae814f21ad70ec524aef121 /bindings | |
parent | 3070e9a666a0118ce293fde5b9500dcf7ad1f0c9 (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.cpp | 43 | ||||
-rw-r--r-- | bindings/go/llvm/DIBuilderBindings.h | 19 | ||||
-rw-r--r-- | bindings/go/llvm/dibuilder.go | 14 |
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} } |