Mercurial > hg > octave-nkf
diff libinterp/corefcn/pt-jit.cc @ 18995:4a4edf0f2077 nkf-ready
fix LLVM 3.4 build (bug #41061)
* configure.ac: Call new functions OCTAVE_LLVM_RAW_FD_OSTREAM_API and
OCTAVE_LLVM_LEGACY_PASSMANAGER_API, check for Verifier.h header file
* m4/acinclude.m4 (OCTAVE_LLVM_RAW_FD_OSTREAM_API): New function to
detect correct raw_fd_ostream API
* m4/acinclude.m4 (OCTAVE_LLVM_LEGACY_PASSMANAGER_API): New function
to detect legacy passmanager API
* libinterp/corefcn/jit-util.h: Use legacy passmanager namespace if
necessary
* libinterp/corefcn/pt-jit.h (class tree_jit): Use legacy passmanager
class if necessary
* libinterp/corefcn/pt-jit.cc: Include appropriate header files
* libinterp/corefcn/pt-jit.cc (tree_jit::initialize): Use legacy
passmanager if necessary
* libinterp/corefcn/pt-jit.cc (tree_jit::optimize): Use correct API
* libinterp/corefcn/jit-typeinfo.cc: Include appropriate header file
author | Stefan Mahr <dac922@gmx.de> |
---|---|
date | Sun, 11 May 2014 02:28:33 +0200 |
parents | fe0e34be5576 |
children | a8424044be23 770c0d79341b |
line wrap: on
line diff
--- a/libinterp/corefcn/pt-jit.cc +++ b/libinterp/corefcn/pt-jit.cc @@ -50,11 +50,22 @@ #include <llvm/Analysis/CallGraph.h> #include <llvm/Analysis/Passes.h> + +#ifdef HAVE_LLVM_IR_VERIFIER_H +#include <llvm/IR/Verifier.h> +#else #include <llvm/Analysis/Verifier.h> +#endif + #include <llvm/Bitcode/ReaderWriter.h> #include <llvm/ExecutionEngine/ExecutionEngine.h> #include <llvm/ExecutionEngine/JIT.h> + +#ifdef LEGACY_PASSMANAGER +#include <llvm/IR/LegacyPassManager.h> +#else #include <llvm/PassManager.h> +#endif #ifdef HAVE_LLVM_IR_FUNCTION_H #include <llvm/IR/LLVMContext.h> @@ -2053,10 +2064,15 @@ if (! engine) return false; +#ifdef LEGACY_PASSMANAGER + module_pass_manager = new llvm::legacy::PassManager (); + pass_manager = new llvm::legacy::FunctionPassManager (module); +#else module_pass_manager = new llvm::PassManager (); + pass_manager = new llvm::FunctionPassManager (module); +#endif module_pass_manager->add (llvm::createAlwaysInlinerPass ()); - pass_manager = new llvm::FunctionPassManager (module); #ifdef HAVE_LLVM_DATALAYOUT pass_manager->add (new llvm::DataLayout (*engine->getDataLayout ())); #else @@ -2171,8 +2187,13 @@ if (Vdebug_jit) { std::string error; +#ifdef RAW_FD_OSTREAM_ARG_IS_LLVM_SYS_FS + llvm::raw_fd_ostream fout ("test.bc", error, + llvm::sys::fs::F_Binary); +#else llvm::raw_fd_ostream fout ("test.bc", error, llvm::raw_fd_ostream::F_Binary); +#endif llvm::WriteBitcodeToFile (module, fout); } }