diff options
author | Jan Vesely <[email protected]> | 2018-02-15 14:00:38 -0500 |
---|---|---|
committer | Jan Vesely <[email protected]> | 2018-02-15 18:18:53 -0500 |
commit | 78673b614b01a8a416367db23937743c0e1aaa36 (patch) | |
tree | 22f835d4dbb37e5f35766a432fb2b26d7b59da1d /src/gallium/state_trackers/clover | |
parent | 05d84ed68add9e6adfcc602a274405e04226c1b7 (diff) |
clover: Fix build after llvm r325155 and r325160
r325155 ("Pass a reference to a module to the bitcode writer.")
and
r325160 ("Pass module reference to CloneModule")
change function interface from pointer to reference.
v2: Fix indentation (tab instead of spaces)
Signed-off-by: Jan Vesely <[email protected]>
Reviewed-by: Francisco Jerez <[email protected]>
Diffstat (limited to 'src/gallium/state_trackers/clover')
3 files changed, 30 insertions, 2 deletions
diff --git a/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp b/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp index 679ecd87580..40bb426218d 100644 --- a/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp +++ b/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp @@ -66,7 +66,7 @@ namespace { emit_code(const ::llvm::Module &mod) { ::llvm::SmallVector<char, 1024> data; ::llvm::raw_svector_ostream os { data }; - WriteBitcodeToFile(&mod, os); + compat::write_bitcode_to_file(mod, os); return { os.str().begin(), os.str().end() }; } } diff --git a/src/gallium/state_trackers/clover/llvm/codegen/native.cpp b/src/gallium/state_trackers/clover/llvm/codegen/native.cpp index 12c83a92b66..409f8ac32f0 100644 --- a/src/gallium/state_trackers/clover/llvm/codegen/native.cpp +++ b/src/gallium/state_trackers/clover/llvm/codegen/native.cpp @@ -156,7 +156,7 @@ clover::llvm::print_module_native(const ::llvm::Module &mod, const target &target) { std::string log; try { - std::unique_ptr< ::llvm::Module> cmod { CloneModule(&mod) }; + std::unique_ptr< ::llvm::Module> cmod { compat::clone_module(mod) }; return as_string(emit_code(*cmod, target, TargetMachine::CGFT_AssemblyFile, log)); } catch (...) { diff --git a/src/gallium/state_trackers/clover/llvm/compat.hpp b/src/gallium/state_trackers/clover/llvm/compat.hpp index 6fc75fb2502..19528a0133f 100644 --- a/src/gallium/state_trackers/clover/llvm/compat.hpp +++ b/src/gallium/state_trackers/clover/llvm/compat.hpp @@ -36,9 +36,17 @@ #include "util/algorithm.hpp" +#if HAVE_LLVM < 0x0400 +#include <llvm/Bitcode/ReaderWriter.h> +#else +#include <llvm/Bitcode/BitcodeReader.h> +#include <llvm/Bitcode/BitcodeWriter.h> +#endif + #include <llvm/IR/LLVMContext.h> #include <llvm/Linker/Linker.h> #include <llvm/Transforms/IPO.h> +#include <llvm/Transforms/Utils/Cloning.h> #include <llvm/Target/TargetMachine.h> #if HAVE_LLVM >= 0x0400 #include <llvm/Support/Error.h> @@ -217,6 +225,26 @@ namespace clover { ctx.setDiagnosticHandler(diagnostic_handler, data); #endif } + + inline std::unique_ptr< ::llvm::Module> + clone_module(const ::llvm::Module &mod) + { +#if HAVE_LLVM >= 0x0700 + return ::llvm::CloneModule(mod); +#else + return ::llvm::CloneModule(&mod); +#endif + } + + template<typename T> void + write_bitcode_to_file(const ::llvm::Module &mod, T &os) + { +#if HAVE_LLVM >= 0x0700 + ::llvm::WriteBitcodeToFile(mod, os); +#else + ::llvm::WriteBitcodeToFile(&mod, os); +#endif + } } } } |