diff options
Diffstat (limited to 'src/gallium/state_trackers/clover/llvm/compat.hpp')
-rw-r--r-- | src/gallium/state_trackers/clover/llvm/compat.hpp | 28 |
1 files changed, 28 insertions, 0 deletions
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 + } } } } |