[PATCH] bindings/go: expose DIBuilder::createReplaceableCompositeType

Andrew Wilkins axwalk at gmail.com
Tue Feb 24 02:24:23 PST 2015


Hi pcc,

We extend the DIBuilder type, adding a method for creating
replaceable composite types. This is necessary for creating
debug info describing self-referential types.

http://reviews.llvm.org/D7851

Files:
  bindings/go/llvm/DIBuilderBindings.cpp
  bindings/go/llvm/DIBuilderBindings.h
  bindings/go/llvm/dibuilder.go

Index: bindings/go/llvm/DIBuilderBindings.cpp
===================================================================
--- bindings/go/llvm/DIBuilderBindings.cpp
+++ bindings/go/llvm/DIBuilderBindings.cpp
@@ -146,6 +146,18 @@
   return wrap(CT);
 }
 
+LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(
+    LLVMDIBuilderRef Dref, unsigned Tag, const char *Name,
+    LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line,
+    unsigned RuntimeLang, uint64_t SizeInBits, uint64_t AlignInBits,
+    unsigned Flags) {
+  DIBuilder *D = unwrap(Dref);
+  DICompositeType CT = D->createReplaceableCompositeType(
+      Tag, Name, unwrapDI<DIDescriptor>(Scope), unwrapDI<DIFile>(File), Line,
+      RuntimeLang, SizeInBits, AlignInBits, Flags);
+  return wrap(CT);
+}
+
 LLVMMetadataRef
 LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
                               const char *Name, LLVMMetadataRef File,
Index: bindings/go/llvm/DIBuilderBindings.h
===================================================================
--- bindings/go/llvm/DIBuilderBindings.h
+++ bindings/go/llvm/DIBuilderBindings.h
@@ -84,6 +84,11 @@
     uint64_t AlignInBits, unsigned Flags, LLVMMetadataRef DerivedFrom,
     LLVMMetadataRef ElementTypes);
 
+LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType(
+    LLVMDIBuilderRef D, unsigned Tag, const char *Name, LLVMMetadataRef Scope,
+    LLVMMetadataRef File, unsigned Line, unsigned RuntimeLang,
+    uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags);
+
 LLVMMetadataRef
 LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef D, LLVMMetadataRef Scope,
                               const char *Name, LLVMMetadataRef File,
Index: bindings/go/llvm/dibuilder.go
===================================================================
--- bindings/go/llvm/dibuilder.go
+++ bindings/go/llvm/dibuilder.go
@@ -343,6 +343,38 @@
 	return Metadata{C: result}
 }
 
+// DIReplaceableCompositeType holds the values for creating replaceable
+// composite type debug metadata.
+type DIReplaceableCompositeType struct {
+	Tag         dwarf.Tag
+	Name        string
+	File        Metadata
+	Line        int
+	RuntimeLang int
+	SizeInBits  uint64
+	AlignInBits uint64
+	Flags       int
+}
+
+// CreateReplaceableCompositeType creates replaceable composite type debug metadata.
+func (d *DIBuilder) CreateReplaceableCompositeType(scope Metadata, t DIReplaceableCompositeType) Metadata {
+	name := C.CString(t.Name)
+	defer C.free(unsafe.Pointer(name))
+	result := C.LLVMDIBuilderCreateReplaceableCompositeType(
+		d.ref,
+		C.unsigned(t.Tag),
+		name,
+		scope.C,
+		t.File.C,
+		C.unsigned(t.Line),
+		C.unsigned(t.RuntimeLang),
+		C.uint64_t(t.SizeInBits),
+		C.uint64_t(t.AlignInBits),
+		C.unsigned(t.Flags),
+	)
+	return Metadata{C: result}
+}
+
 // DIMemberType holds the values for creating member type debug metadata.
 type DIMemberType struct {
 	Name         string

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7851.20581.patch
Type: text/x-patch
Size: 2928 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150224/b8da60aa/attachment.bin>


More information about the llvm-commits mailing list