summaryrefslogtreecommitdiff
path: root/src/gallium/state_trackers
diff options
context:
space:
mode:
authorJan Vesely <jan.vesely@rutgers.edu>2018-02-15 14:00:38 -0500
committerJan Vesely <jan.vesely@rutgers.edu>2018-02-15 18:18:53 -0500
commit78673b614b01a8a416367db23937743c0e1aaa36 (patch)
tree22f835d4dbb37e5f35766a432fb2b26d7b59da1d /src/gallium/state_trackers
parent05d84ed68add9e6adfcc602a274405e04226c1b7 (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 <jan.vesely@rutgers.edu> Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Diffstat (limited to 'src/gallium/state_trackers')
-rw-r--r--src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp2
-rw-r--r--src/gallium/state_trackers/clover/llvm/codegen/native.cpp2
-rw-r--r--src/gallium/state_trackers/clover/llvm/compat.hpp28
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 679ecd8758..40bb426218 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 12c83a92b6..409f8ac32f 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 6fc75fb250..19528a0133 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
+ }
}
}
}