llvm_c_ext/lib/DIBuilder.cpp
changeset 54 a288aced3dd1
parent 32 1378060fadd6
child 79 6d6e5a3ec6b1
--- a/llvm_c_ext/lib/DIBuilder.cpp	Wed Jan 27 11:43:56 2016 +0000
+++ b/llvm_c_ext/lib/DIBuilder.cpp	Wed Jan 27 14:20:58 2016 +0000
@@ -77,6 +77,7 @@
                                         unwrap<DIFile>(File), Discriminator));
 }
 
+#if (LLVM_VERSION_MAJOR <= 3) && (LLVM_VERSION_MINOR <= 8)
 LLVMMetadataRef LLVMDIBuilderCreateFunction(
     LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,
     const char *LinkageName, LLVMMetadataRef File, unsigned Line,
@@ -89,6 +90,20 @@
                                 IsLocalToUnit, IsDefinition, ScopeLine, Flags,
                                 IsOptimized, unwrap<Function>(Func)));
 }
+#else
+LLVMMetadataRef LLVMDIBuilderCreateFunction(
+    LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,
+    const char *LinkageName, LLVMMetadataRef File, unsigned Line,
+    LLVMMetadataRef CompositeType, int IsLocalToUnit, int IsDefinition,
+    unsigned ScopeLine, unsigned Flags, int IsOptimized) {
+  DIBuilder *D = unwrap(Dref);
+  return wrap(D->createFunction(unwrap<DIScope>(Scope), Name, LinkageName,
+                                File ? unwrap<DIFile>(File) : nullptr, Line,
+                                unwrap<DISubroutineType>(CompositeType),
+                                IsLocalToUnit, IsDefinition, ScopeLine, Flags,
+                                IsOptimized));
+}
+#endif
 
 LLVMMetadataRef LLVMDIBuilderCreateAutoVariable(
     LLVMDIBuilderRef Dref, LLVMMetadataRef Scope,
@@ -130,6 +145,7 @@
                                    AlignInBits, Name));
 }
 
+#if (LLVM_VERSION_MAJOR <= 3) && (LLVM_VERSION_MINOR <= 8)
 LLVMMetadataRef
 LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref, LLVMMetadataRef File,
                                   LLVMMetadataRef ParameterTypes) {
@@ -138,6 +154,16 @@
       D->createSubroutineType(File ? unwrap<DIFile>(File) : nullptr,
                               DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
 }
+#else
+LLVMMetadataRef
+LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref,
+                                  LLVMMetadataRef ParameterTypes) {
+  DIBuilder *D = unwrap(Dref);
+  return wrap(
+      D->createSubroutineType(DITypeRefArray(unwrap<MDTuple>(ParameterTypes))));
+}
+#endif
+
 
 LLVMMetadataRef LLVMDIBuilderCreateStructType(
     LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, const char *Name,