From 83a863ea83cadd6519ca752bff49ce840a2bf587 Mon Sep 17 00:00:00 2001 From: evghenii Date: Tue, 14 Oct 2014 14:17:36 +0200 Subject: [PATCH] fix compilation for llvm 3.5 --- ispc.cpp | 4 ++++ module.cpp | 19 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ispc.cpp b/ispc.cpp index 44b6e4ac..00e0faec 100644 --- a/ispc.cpp +++ b/ispc.cpp @@ -698,6 +698,10 @@ Target::Target(const char *arch, const char *cpu, const char *isa, bool pic) : "i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-" "f80:128:128-n8:16:32:64-S128-v16:16:16-v32:32:32-v4:128:128"; } + else if (m_isa == Target::NVPTX) + { + dl_string = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"; + } // 3. Finally set member data m_dataLayout = new llvm::DataLayout(dl_string); diff --git a/module.cpp b/module.cpp index be41db9a..2ef89bbd 100644 --- a/module.cpp +++ b/module.cpp @@ -85,7 +85,11 @@ #include #include #ifdef ISPC_NVPTX_ENABLED - #include "llvm/Assembly/AssemblyAnnotationWriter.h" +#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) // LLVM 3.5+ + #include +#else + #include +#endif #endif /* ISPC_NVPTX_ENABLED */ #endif #include @@ -1165,6 +1169,15 @@ lFixAttributes(const vecString_t &src, vecString_t &dst) for (vecString_t::const_iterator it = src.begin(); it != src.end(); it++) { vecString_t words = lSplitString(*it); + if (words.size() > 1 && (words[0] == "target" && words[1] == "datalayout")) + { + std::string s = "target datalayout = "; + s += '"'; + s += "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"; + s += '"'; + dst.push_back(s); + continue; + } if (!words.empty() && words[0] == "attributes") continue; std::string s; @@ -1231,7 +1244,11 @@ Module::writeBitcode(llvm::Module *module, const char *outFileName) { std::string s; llvm::raw_string_ostream out(s); +#if !defined(LLVM_3_2) && !defined(LLVM_3_3) && !defined(LLVM_3_4) // LLVM 3.5+ + std::unique_ptr Annotator; +#else llvm::OwningPtr Annotator; +#endif module->print(out, Annotator.get()); std::istringstream iss(s);