summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorRebecca N. Palmer <rebecca_palmer@zoho.com>2018-07-21 20:05:54 +0100
committerYang Rong <rong.r.yang@intel.com>2018-08-20 15:31:42 +0800
commite1b2419a0008e38ef2d9d255d9e9c74e9fba084b (patch)
treece98cc9e6a909a2c732ffc80c1fb30c863d15166 /backend
parent6e60548adee04040d5ccd53f38997476df154e5c (diff)
downloadbeignet-e1b2419a0008e38ef2d9d255d9e9c74e9fba084b.tar.gz
Add preliminary LLVM 7 support
This is preliminary because LLVM 7 has not been released yet: it was tested with the snapshot from Debian experimental (svn336894). 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) Signed-off-by: Rebecca N. Palmer <rebecca_palmer@zoho.com> Reviewed-by: Yang Rong <rong.r.yang@intel.com>
Diffstat (limited to 'backend')
-rw-r--r--backend/src/backend/gen_program.cpp8
-rw-r--r--backend/src/backend/program.cpp4
-rw-r--r--backend/src/llvm/ExpandLargeIntegers.cpp2
-rw-r--r--backend/src/llvm/llvm_bitcode_link.cpp4
-rw-r--r--backend/src/llvm/llvm_includes.hpp4
5 files changed, 21 insertions, 1 deletions
diff --git a/backend/src/backend/gen_program.cpp b/backend/src/backend/gen_program.cpp
index 274c99c7..41592349 100644
--- a/backend/src/backend/gen_program.cpp
+++ b/backend/src/backend/gen_program.cpp
@@ -454,7 +454,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) );
@@ -545,7 +549,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)) {
diff --git a/backend/src/backend/program.cpp b/backend/src/backend/program.cpp
index c37c5951..b36f7b4a 100644
--- 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;
diff --git a/backend/src/llvm/ExpandLargeIntegers.cpp b/backend/src/llvm/ExpandLargeIntegers.cpp
index 8515dc13..4aec44ee 100644
--- 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;
diff --git a/backend/src/llvm/llvm_bitcode_link.cpp b/backend/src/llvm/llvm_bitcode_link.cpp
index ef56e4c2..4c3e20e4 100644
--- 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;
diff --git a/backend/src/llvm/llvm_includes.hpp b/backend/src/llvm/llvm_includes.hpp
index 184553af..ffccf025 100644
--- 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"