You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by ta...@apache.org on 2016/05/12 22:09:43 UTC

[08/50] [abbrv] incubator-impala git commit: Enable BOOST_NO_EXCEPTIONS for codegened code

Enable BOOST_NO_EXCEPTIONS for codegened code

BOOST_NO_EXCEPTIONS lets us provide an handler for errors instead of
having boost throw exceptions. This lets us crash the process in a
slightly nicer way and also greatly reduces the number of static
exception objects littering the cross-compiled IR module, which helps
with codegen time.

Also turn on colour diagnostics for cross-compiled clang (it's already
enabled for ASAN clang).

Change-Id: Iaff17b502a752963346b3a2f17fc58d22e778d50
Reviewed-on: http://gerrit.cloudera.org:8080/2909
Reviewed-by: Tim Armstrong <ta...@cloudera.com>
Tested-by: Internal Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/01baf57a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/01baf57a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/01baf57a

Branch: refs/heads/master
Commit: 01baf57aa4ca82acb0967ffaca5165ab0572ee59
Parents: a41710a
Author: Tim Armstrong <ta...@cloudera.com>
Authored: Fri Apr 29 11:50:16 2016 -0700
Committer: Tim Armstrong <ta...@cloudera.com>
Committed: Thu May 12 14:17:51 2016 -0700

----------------------------------------------------------------------
 be/CMakeLists.txt              |  4 +++-
 be/src/codegen/llvm-codegen.cc | 11 +++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/01baf57a/be/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/be/CMakeLists.txt b/be/CMakeLists.txt
index 4f7620f..1c63903 100644
--- a/be/CMakeLists.txt
+++ b/be/CMakeLists.txt
@@ -135,9 +135,11 @@ add_definitions(-DHAVE_INTTYPES_H -DHAVE_NETINET_IN_H -DHAVE_NETDB_H)
 #  -Wno-c++11-extensions: c++11 extensions are ok as long as clang supports them
 #  -Wno-return-type-c-linkage: UDFs return C++ classes but use C linkage to prevent
 #       mangling
+#  -DBOOST_NO_EXCEPTIONS: call a custom error handler for exceptions in codegen'd code.
 set(CLANG_IR_CXX_FLAGS "-emit-llvm" "-c" "-DIR_COMPILE" "-DNDEBUG"
   "-DHAVE_INTTYPES_H" "-DHAVE_NETINET_IN_H" "-DBOOST_DATE_TIME_POSIX_TIME_STD_CONFIG"
-  "-Wno-deprecated" "-Wno-c++11-extensions" "-Wno-return-type-c-linkage" "-O1")
+  "-DBOOST_NO_EXCEPTIONS" "-fcolor-diagnostics" "-Wno-deprecated" "-Wno-c++11-extensions"
+  "-Wno-return-type-c-linkage" "-O1")
 if (IMPALA_TOOLCHAIN)
   # -Werror: compile warnings should be errors when using the toolchain compiler.
   SET(CLANG_IR_CXX_FLAGS "${CLANG_IR_CXX_FLAGS}" "-Werror")

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/01baf57a/be/src/codegen/llvm-codegen.cc
----------------------------------------------------------------------
diff --git a/be/src/codegen/llvm-codegen.cc b/be/src/codegen/llvm-codegen.cc
index 0e82bde..bbfd419 100644
--- a/be/src/codegen/llvm-codegen.cc
+++ b/be/src/codegen/llvm-codegen.cc
@@ -1145,3 +1145,14 @@ Value* LlvmCodeGen::GetPtrTo(LlvmBuilder* builder, Value* v, const char* name) {
 }
 
 }
+
+namespace boost {
+
+/// Handler for exceptions in cross-compiled functions.
+/// When boost is configured with BOOST_NO_EXCEPTIONS, it calls this handler instead of
+/// throwing the exception.
+void throw_exception(std::exception const &e) {
+  LOG(FATAL) << "Cannot handle exceptions in codegen'd code " << e.what();
+}
+
+}