]> git.pld-linux.org Git - packages/beignet.git/blobdiff - beignet-llvm7-support.patch
- merged some Debian patches
[packages/beignet.git] / beignet-llvm7-support.patch
diff --git a/beignet-llvm7-support.patch b/beignet-llvm7-support.patch
new file mode 100644 (file)
index 0000000..9d460ce
--- /dev/null
@@ -0,0 +1,106 @@
+Description: Add LLVM 7 support
+
+1.Change linking order, as clangCodeGen now links to clangFrontend
+2.Pass references not pointers to WriteBitcodeToFile and CloneModule
+3.Add the headers that LoopSimplifyID, LCSSAID and
+some create*Pass have moved to
+4.Define our DEBUG whether or not we just undefined LLVM's
+(theirs is now LLVM_DEBUG, but we never actually use it)
+
+Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
+Bug-Debian: https://bugs.debian.org/912787
+Forwarded: https://lists.freedesktop.org/archives/beignet/2018-July/009212.html
+
+--- a/CMake/FindLLVM.cmake
++++ b/CMake/FindLLVM.cmake
+@@ -113,10 +113,10 @@ macro(add_one_lib name)
+ endmacro()
+ #Assume clang lib path same as llvm lib path
++add_one_lib("clangCodeGen")
+ add_one_lib("clangFrontend")
+ add_one_lib("clangSerialization")
+ add_one_lib("clangDriver")
+-add_one_lib("clangCodeGen")
+ add_one_lib("clangSema")
+ add_one_lib("clangStaticAnalyzerFrontend")
+ add_one_lib("clangStaticAnalyzerCheckers")
+--- a/backend/src/backend/gen_program.cpp
++++ b/backend/src/backend/gen_program.cpp
+@@ -449,7 +449,11 @@ namespace gbe {
+ #ifdef GBE_COMPILER_AVAILABLE
+       std::string str;
+       llvm::raw_string_ostream OS(str);
++#if LLVM_VERSION_MAJOR >= 7
++      llvm::WriteBitcodeToFile(*((llvm::Module*)prog->module), OS);
++#else
+       llvm::WriteBitcodeToFile((llvm::Module*)prog->module, OS);
++#endif
+       std::string& bin_str = OS.str();
+       int llsz = bin_str.size();
+       *binary = (char *)malloc(sizeof(char) * (llsz+1) );
+@@ -540,7 +544,11 @@ namespace gbe {
+                                     &modRef);
+         src = llvm::unwrap(modRef);
+       }
++#if LLVM_VERSION_MAJOR >= 7
++      llvm::Module* clone = llvm::CloneModule(*src).release();
++#else
+       llvm::Module* clone = llvm::CloneModule(src).release();
++#endif
+       if (LLVMLinkModules2(wrap(dst), wrap(clone))) {
+ #elif LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 37
+       if (LLVMLinkModules(wrap(dst), wrap(src), LLVMLinkerPreserveSource_Removed, &errMsg)) {
+--- a/backend/src/backend/program.cpp
++++ b/backend/src/backend/program.cpp
+@@ -794,7 +794,11 @@ namespace gbe {
+       llvm::raw_fd_ostream ostream (dumpSPIRBinaryName.c_str(),
+                                     err, llvm::sys::fs::F_None);
+       if (!err)
++#if LLVM_VERSION_MAJOR<7
+         llvm::WriteBitcodeToFile(*out_module, ostream);
++#else
++        llvm::WriteBitcodeToFile(**out_module, ostream);
++#endif
+     }
+ #endif
+     return true;
+--- a/backend/src/llvm/llvm_bitcode_link.cpp
++++ b/backend/src/llvm/llvm_bitcode_link.cpp
+@@ -340,7 +340,11 @@ namespace gbe
+     /* We use beignet's bitcode as dst because it will have a lot of
+        lazy functions which will not be loaded. */
+ #if LLVM_VERSION_MAJOR * 10 + LLVM_VERSION_MINOR >= 39
++#if LLVM_VERSION_MAJOR >= 7
++    llvm::Module * linked_module = llvm::CloneModule(*(llvm::Module*)mod).release();
++#else
+     llvm::Module * linked_module = llvm::CloneModule((llvm::Module*)mod).release();
++#endif
+     if(LLVMLinkModules2(wrap(clonedLib), wrap(linked_module))) {
+ #else
+     char* errorMsg;
+--- a/backend/src/llvm/llvm_includes.hpp
++++ b/backend/src/llvm/llvm_includes.hpp
+@@ -89,6 +89,10 @@
+ #include "llvm/CodeGen/IntrinsicLowering.h"
+ #include "llvm/Transforms/Scalar.h"
++#if LLVM_VERSION_MAJOR >= 7
++#include "llvm/Transforms/Utils.h"
++#include "llvm/Transforms/InstCombine/InstCombine.h"
++#endif
+ #include "llvm/MC/MCAsmInfo.h"
+ #include "llvm/MC/MCContext.h"
+ #include "llvm/MC/MCInstrInfo.h"
+--- a/backend/src/llvm/ExpandLargeIntegers.cpp
++++ b/backend/src/llvm/ExpandLargeIntegers.cpp
+@@ -99,8 +99,8 @@ using namespace llvm;
+ #ifdef DEBUG
+   #undef DEBUG
+-  #define DEBUG(...)
+ #endif
++#define DEBUG(...)
+ // Break instructions up into no larger than 64-bit chunks.
+ static const unsigned kChunkBits = 64;
+ static const unsigned kChunkBytes = kChunkBits / CHAR_BIT;
This page took 0.084818 seconds and 4 git commands to generate.