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_pal...@zoho.com> --- 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 @@ -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)) { --- 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; _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/beignet