diff -r 3797df921988 configure.ac
--- a/configure.ac	Wed Apr 29 17:09:24 2015 -0700
+++ b/configure.ac	Sat May 02 14:23:50 2015 +0200
@@ -815,8 +815,13 @@
       AC_MSG_NOTICE([using -isystem for LLVM headers])])
 
     dnl Use -isystem so we don't get warnings from llvm headers
-    LLVM_CPPFLAGS="$LLVM_INCLUDE_FLAG `$LLVM_CONFIG --includedir`"
-    LLVM_CXXFLAGS=
+    AX_COMPARE_VERSION($GCC_VERSION,[ge],[4.7],[
+      LLVM_CPPFLAGS="-std=c++11 $LLVM_INCLUDE_FLAG `$LLVM_CONFIG --includedir`"
+      LLVM_CXXFLAGS="-std=c++11"
+    ],[
+      LLVM_CPPFLAGS="$LLVM_INCLUDE_FLAG `$LLVM_CONFIG --includedir`"
+      LLVM_CXXFLAGS=
+    ])
     LLVM_LDFLAGS="-L`$LLVM_CONFIG --libdir`"
 
 
@@ -860,6 +865,8 @@
     OCTAVE_LLVM_CALLINST_ADDATTRIBUTE_API
     OCTAVE_LLVM_RAW_FD_OSTREAM_API
     OCTAVE_LLVM_LEGACY_PASSMANAGER_API
+    OCTAVE_LLVM_DATALAYOUTPASS_API
+
     AC_LANG_POP(C++)
     CPPFLAGS="$save_CPPFLAGS"
     CXXFLAGS="$save_CXXFLAGS"
diff -r 3797df921988 libinterp/corefcn/jit-typeinfo.cc
--- a/libinterp/corefcn/jit-typeinfo.cc	Wed Apr 29 17:09:24 2015 -0700
+++ b/libinterp/corefcn/jit-typeinfo.cc	Sat May 02 14:23:50 2015 +0200
@@ -1208,7 +1208,7 @@
   for (int op = 0; op < octave_value::num_binary_ops; ++op)
     {
       llvm::Twine fn_name ("octave_jit_binary_any_any_");
-      fn_name = fn_name + llvm::Twine (op);
+      fn_name.concat( llvm::Twine (op) );
 
       fn = create_internal (fn_name, any, any, any);
       fn.mark_can_error ();
diff -r 3797df921988 libinterp/corefcn/pt-jit.cc
--- a/libinterp/corefcn/pt-jit.cc	Wed Apr 29 17:09:24 2015 -0700
+++ b/libinterp/corefcn/pt-jit.cc	Sat May 02 14:23:50 2015 +0200
@@ -59,6 +59,7 @@
 
 #include <llvm/Bitcode/ReaderWriter.h>
 #include <llvm/ExecutionEngine/ExecutionEngine.h>
+#include <llvm/ExecutionEngine/MCJIT.h>
 #include <llvm/ExecutionEngine/JIT.h>
 
 #ifdef LEGACY_PASSMANAGER
@@ -83,6 +84,7 @@
 #include <llvm/IRBuilder.h>
 #endif
 
+#include <llvm/Support/FileSystem.h>
 #include <llvm/Support/raw_os_ostream.h>
 #include <llvm/Support/TargetSelect.h>
 
@@ -2077,7 +2079,11 @@
   module_pass_manager->add (llvm::createAlwaysInlinerPass ());
 
 #ifdef HAVE_LLVM_DATALAYOUT
+#ifdef HAVE_LLVM_DATALAYOUTPASS
+  pass_manager->add (new llvm::DataLayoutPass (*engine->getDataLayout ()));
+#else
   pass_manager->add (new llvm::DataLayout (*engine->getDataLayout ()));
+#endif
 #else
   pass_manager->add (new llvm::TargetData (*engine->getTargetData ()));
 #endif
@@ -2192,7 +2198,7 @@
       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);
+                                 llvm::sys::fs::F_Text);
 #else
       llvm::raw_fd_ostream fout ("test.bc", error,
                                  llvm::raw_fd_ostream::F_Binary);
diff -r 3797df921988 m4/acinclude.m4
--- a/m4/acinclude.m4	Wed Apr 29 17:09:24 2015 -0700
+++ b/m4/acinclude.m4	Sat May 02 14:23:50 2015 +0200
@@ -1784,10 +1784,11 @@
     [AC_LANG_PUSH(C++)
       AC_COMPILE_IFELSE(
         [AC_LANG_PROGRAM([[
+          #include <llvm/Support/FileSystem.h>
           #include <llvm/Support/raw_os_ostream.h>
           ]], [[
           std::string str;
-          llvm::raw_fd_ostream fout ("", str, llvm::sys::fs::F_Binary);
+          llvm::raw_fd_ostream fout ("", str, llvm::sys::fs::F_Text);
         ]])],
         octave_cv_raw_fd_ostream_arg_is_llvm_sys_fs=yes,
         octave_cv_raw_fd_ostream_arg_is_llvm_sys_fs=no)
@@ -1828,6 +1829,33 @@
   fi
 ])
 dnl
+dnl Check for llvm::DataLayoutPass API
+dnl
+AC_DEFUN([OCTAVE_LLVM_DATALAYOUTPASS_API], [
+  AC_CACHE_CHECK([check for LLVM::DataLayoutPass],
+    [octave_cv_datalayoutpass],
+    [AC_LANG_PUSH(C++)
+      save_LIBS="$LIBS"
+      LIBS="$LLVM_LIBS $LIBS"
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM([[
+          #include <llvm/IR/DataLayout.h>
+          ]], [[
+          llvm::Module *module;
+          llvm::DataLayoutPass *datalayoutpass;
+          datalayoutpass = new llvm::DataLayoutPass (module)
+        ]])],
+        octave_cv_datalayoutpass=yes,
+        octave_cv_datalayoutpass=no)
+      LIBS="$save_LIBS"
+    AC_LANG_POP(C++)
+  ])
+  if test $octave_cv_datalayoutpass = yes; then
+    AC_DEFINE(HAVE_LLVM_DATALAYOUTPASS, 1,
+      [Define to 1 if LLVM::DataLayoutPass exists.])
+  fi
+])
+dnl
 dnl Check for ar.
 dnl
 AC_DEFUN([OCTAVE_PROG_AR], [
