[llvm] r234428 - Go bindings: make various DIBuilder arguments optional.

Peter Collingbourne peter at pcc.me.uk
Wed Apr 8 13:18:57 PDT 2015


Author: pcc
Date: Wed Apr  8 15:18:57 2015
New Revision: 234428

URL: http://llvm.org/viewvc/llvm-project?rev=234428&view=rev
Log:
Go bindings: make various DIBuilder arguments optional.

r234262 changed some code in DIBuilderBindings.cpp to use the unwrap function
to unwrap debug metadata. The problem with this is that unwrap asserts that
its argument is non-null, which is not what we want in a number of places
in DIBuilder where the argument is optional. This change makes certain
arguments optional by adding null checks in places where it is required,
fixing the llgo build.

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

Modified: llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp?rev=234428&r1=234427&r2=234428&view=diff
==============================================================================
--- llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp (original)
+++ llvm/trunk/bindings/go/llvm/DIBuilderBindings.cpp Wed Apr  8 15:18:57 2015
@@ -83,9 +83,9 @@ LLVMMetadataRef LLVMDIBuilderCreateFunct
   DIBuilder *D = unwrap(Dref);
   DISubprogram SP = D->createFunction(
       DIDescriptor(unwrap<MDScope>(Scope)), Name, LinkageName,
-      unwrap<MDFile>(File), Line, unwrap<MDCompositeTypeBase>(CompositeType),
-      IsLocalToUnit, IsDefinition, ScopeLine, Flags, IsOptimized,
-      unwrap<Function>(Func));
+      File ? unwrap<MDFile>(File) : nullptr, Line,
+      unwrap<MDCompositeTypeBase>(CompositeType), IsLocalToUnit, IsDefinition,
+      ScopeLine, Flags, IsOptimized, unwrap<Function>(Func));
   return wrap(SP);
 }
 
@@ -125,8 +125,9 @@ LLVMMetadataRef
 LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref, LLVMMetadataRef File,
                                   LLVMMetadataRef ParameterTypes) {
   DIBuilder *D = unwrap(Dref);
-  DICompositeType CT = D->createSubroutineType(
-      unwrap<MDFile>(File), DITypeArray(unwrap<MDTuple>(ParameterTypes)));
+  DICompositeType CT =
+      D->createSubroutineType(File ? unwrap<MDFile>(File) : nullptr,
+                              DITypeArray(unwrap<MDTuple>(ParameterTypes)));
   return wrap(CT);
 }
 
@@ -137,9 +138,10 @@ LLVMMetadataRef LLVMDIBuilderCreateStruc
     LLVMMetadataRef ElementTypes) {
   DIBuilder *D = unwrap(Dref);
   DICompositeType CT = D->createStructType(
-      DIDescriptor(unwrap<MDScope>(Scope)), Name, unwrap<MDFile>(File), Line,
-      SizeInBits, AlignInBits, Flags, unwrap<MDType>(DerivedFrom),
-      DIArray(unwrap<MDTuple>(ElementTypes)));
+      DIDescriptor(unwrap<MDScope>(Scope)), Name,
+      File ? unwrap<MDFile>(File) : nullptr, Line, SizeInBits, AlignInBits,
+      Flags, DerivedFrom ? unwrap<MDType>(DerivedFrom) : nullptr,
+      ElementTypes ? DIArray(unwrap<MDTuple>(ElementTypes)) : nullptr);
   return wrap(CT);
 }
 
@@ -150,8 +152,9 @@ LLVMMetadataRef LLVMDIBuilderCreateRepla
     unsigned Flags) {
   DIBuilder *D = unwrap(Dref);
   DICompositeType CT = D->createReplaceableCompositeType(
-      Tag, Name, DIDescriptor(unwrap<MDScope>(Scope)), unwrap<MDFile>(File),
-      Line, RuntimeLang, SizeInBits, AlignInBits, Flags);
+      Tag, Name, DIDescriptor(unwrap<MDScope>(Scope)),
+      File ? unwrap<MDFile>(File) : nullptr, Line, RuntimeLang, SizeInBits,
+      AlignInBits, Flags);
   return wrap(CT);
 }
 
@@ -163,8 +166,9 @@ LLVMDIBuilderCreateMemberType(LLVMDIBuil
                               unsigned Flags, LLVMMetadataRef Ty) {
   DIBuilder *D = unwrap(Dref);
   DIDerivedType DT = D->createMemberType(
-      DIDescriptor(unwrap<MDScope>(Scope)), Name, unwrap<MDFile>(File), Line,
-      SizeInBits, AlignInBits, OffsetInBits, Flags, unwrap<MDType>(Ty));
+      DIDescriptor(unwrap<MDScope>(Scope)), Name,
+      File ? unwrap<MDFile>(File) : nullptr, Line, SizeInBits, AlignInBits,
+      OffsetInBits, Flags, unwrap<MDType>(Ty));
   return wrap(DT);
 }
 
@@ -185,9 +189,9 @@ LLVMMetadataRef LLVMDIBuilderCreateTyped
                                            LLVMMetadataRef File, unsigned Line,
                                            LLVMMetadataRef Context) {
   DIBuilder *D = unwrap(Dref);
-  DIDerivedType DT =
-      D->createTypedef(unwrap<MDType>(Ty), Name, unwrap<MDFile>(File), Line,
-                       DIDescriptor(unwrap<MDScope>(Context)));
+  DIDerivedType DT = D->createTypedef(
+      unwrap<MDType>(Ty), Name, File ? unwrap<MDFile>(File) : nullptr, Line,
+      Context ? DIDescriptor(unwrap<MDScope>(Context)) : DIDescriptor());
   return wrap(DT);
 }
 





More information about the llvm-commits mailing list