[llvm] r246935 - [bindings] Update Go bindings to DIBuilder

Andrew Wilkins via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 5 19:22:16 PDT 2015


Author: axw
Date: Sat Sep  5 21:22:15 2015
New Revision: 246935

URL: http://llvm.org/viewvc/llvm-project?rev=246935&view=rev
Log:
[bindings] Update Go bindings to DIBuilder

Summary:
Update the Go bindings to DIBuilder to match
the split of creating local variables into
auto and parameter variables.

Reviewers: pcc

Subscribers: llvm-commits, axw

Differential Revision: http://reviews.llvm.org/D11864

Modified:
    llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp
    llvm/trunk/bindings/go/llvm/DIBuilderBindings.h
    llvm/trunk/bindings/go/llvm/dibuilder.go

Modified: llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp?rev=246935&r1=246934&r2=246935&view=diff
==============================================================================
--- llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp (original)
+++ llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp Sat Sep  5 21:22:15 2015
@@ -83,21 +83,27 @@ LLVMMetadataRef LLVMDIBuilderCreateFunct
                                 IsOptimized, unwrap<Function>(Func)));
 }
 
-LLVMMetadataRef LLVMDIBuilderCreateLocalVariable(
-    LLVMDIBuilderRef Dref, unsigned, LLVMMetadataRef Scope,
-    const char *Name, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty,
-    int AlwaysPreserve, unsigned Flags, unsigned ArgNo) {
+LLVMMetadataRef
+LLVMDIBuilderCreateAutoVariable(LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
+                                const char *Name, LLVMMetadataRef File,
+                                unsigned Line, LLVMMetadataRef Ty,
+                                int AlwaysPreserve, unsigned Flags) {
   DIBuilder *D = unwrap(Dref);
-  // FIXME: Update the Go bindings to match the DIBuilder API.
-  if (ArgNo)
-    return wrap(D->createParameterVariable(
-        unwrap<DIScope>(Scope), Name, ArgNo, unwrap<DIFile>(File), Line,
-        unwrap<DIType>(Ty), AlwaysPreserve, Flags));
   return wrap(D->createAutoVariable(unwrap<DIScope>(Scope), Name,
                                     unwrap<DIFile>(File), Line,
                                     unwrap<DIType>(Ty), AlwaysPreserve, Flags));
 }
 
+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, Flags));
+}
+
 LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Dref,
                                              const char *Name,
                                              uint64_t SizeInBits,

Modified: llvm/trunk/bindings/go/llvm/DIBuilderBindings.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/go/llvm/DIBuilderBindings.h?rev=246935&r1=246934&r2=246935&view=diff
==============================================================================
--- llvm/trunk/bindings/go/llvm/DIBuilderBindings.h (original)
+++ llvm/trunk/bindings/go/llvm/DIBuilderBindings.h Sat Sep  5 21:22:15 2015
@@ -57,10 +57,16 @@ LLVMMetadataRef LLVMDIBuilderCreateFunct
     LLVMMetadataRef CompositeType, int IsLocalToUnit, int IsDefinition,
     unsigned ScopeLine, unsigned Flags, int IsOptimized, LLVMValueRef Function);
 
-LLVMMetadataRef LLVMDIBuilderCreateLocalVariable(
-    LLVMDIBuilderRef D, unsigned Tag, LLVMMetadataRef Scope, const char *Name,
+LLVMMetadataRef
+LLVMDIBuilderCreateAutoVariable(LLVMDIBuilderRef D, LLVMMetadataRef Scope,
+                                const char *Name, LLVMMetadataRef File,
+                                unsigned Line, LLVMMetadataRef Ty,
+                                int AlwaysPreserve, unsigned Flags);
+
+LLVMMetadataRef LLVMDIBuilderCreateParameterVariable(
+    LLVMDIBuilderRef D, LLVMMetadataRef Scope, const char *Name, unsigned ArgNo,
     LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Ty, int AlwaysPreserve,
-    unsigned Flags, unsigned ArgNo);
+    unsigned Flags);
 
 LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef D,
                                              const char *Name,

Modified: llvm/trunk/bindings/go/llvm/dibuilder.go
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/go/llvm/dibuilder.go?rev=246935&r1=246934&r2=246935&view=diff
==============================================================================
--- llvm/trunk/bindings/go/llvm/dibuilder.go (original)
+++ llvm/trunk/bindings/go/llvm/dibuilder.go Sat Sep  5 21:22:15 2015
@@ -216,9 +216,35 @@ func (d *DIBuilder) CreateFunction(diSco
 	return Metadata{C: result}
 }
 
-// DILocalVariable holds the values for creating local variable debug metadata.
-type DILocalVariable struct {
-	Tag            dwarf.Tag
+// DIAutoVariable holds the values for creating auto variable debug metadata.
+type DIAutoVariable struct {
+	Name           string
+	File           Metadata
+	Line           int
+	Type           Metadata
+	AlwaysPreserve bool
+	Flags          int
+}
+
+// CreateAutoVariable creates local variable debug metadata.
+func (d *DIBuilder) CreateAutoVariable(scope Metadata, v DIAutoVariable) Metadata {
+	name := C.CString(v.Name)
+	defer C.free(unsafe.Pointer(name))
+	result := C.LLVMDIBuilderCreateAutoVariable(
+		d.ref,
+		scope.C,
+		name,
+		v.File.C,
+		C.unsigned(v.Line),
+		v.Type.C,
+		boolToCInt(v.AlwaysPreserve),
+		C.unsigned(v.Flags),
+	)
+	return Metadata{C: result}
+}
+
+// DIParameterVariable holds the values for creating parameter variable debug metadata.
+type DIParameterVariable struct {
 	Name           string
 	File           Metadata
 	Line           int
@@ -227,25 +253,24 @@ type DILocalVariable struct {
 	Flags          int
 
 	// ArgNo is the 1-based index of the argument in the function's
-	// parameter list if it is an argument, or 0 otherwise.
+	// parameter list.
 	ArgNo int
 }
 
-// CreateLocalVariable creates local variable debug metadata.
-func (d *DIBuilder) CreateLocalVariable(scope Metadata, v DILocalVariable) Metadata {
+// CreateParameterVariable creates parameter variable debug metadata.
+func (d *DIBuilder) CreateParameterVariable(scope Metadata, v DIParameterVariable) Metadata {
 	name := C.CString(v.Name)
 	defer C.free(unsafe.Pointer(name))
-	result := C.LLVMDIBuilderCreateLocalVariable(
+	result := C.LLVMDIBuilderCreateParameterVariable(
 		d.ref,
-		C.unsigned(v.Tag),
 		scope.C,
 		name,
+		C.unsigned(v.ArgNo),
 		v.File.C,
 		C.unsigned(v.Line),
 		v.Type.C,
 		boolToCInt(v.AlwaysPreserve),
 		C.unsigned(v.Flags),
-		C.unsigned(v.ArgNo),
 	)
 	return Metadata{C: result}
 }




More information about the llvm-commits mailing list