summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/OrcError.h2
-rw-r--r--llvm/include/llvm/module.modulemap23
-rw-r--r--llvm/lib/ExecutionEngine/OrcError/OrcError.cpp2
-rw-r--r--llvm/lib/ExecutionEngine/OrcError/RPCError.cpp5
-rw-r--r--llvm/lib/Support/Error.cpp7
5 files changed, 35 insertions, 4 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/OrcError.h b/llvm/include/llvm/ExecutionEngine/Orc/OrcError.h
index e5d6a3eca85..61e2e49a872 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/OrcError.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/OrcError.h
@@ -14,6 +14,8 @@
#define LLVM_EXECUTIONENGINE_ORC_ORCERROR_H
#include "llvm/Support/Error.h"
+#include "llvm/Support/raw_ostream.h"
+#include <string>
#include <system_error>
namespace llvm {
diff --git a/llvm/include/llvm/module.modulemap b/llvm/include/llvm/module.modulemap
index ecb3b37004f..856cd96bba0 100644
--- a/llvm/include/llvm/module.modulemap
+++ b/llvm/include/llvm/module.modulemap
@@ -169,12 +169,31 @@ module LLVM_ExecutionEngine {
// FIXME: These exclude directives were added as a workaround for
// <rdar://problem/29247092> and should be removed once it is fixed.
- exclude header "ExecutionEngine/Orc/RawByteChannel.h"
- exclude header "ExecutionEngine/Orc/RPCUtils.h"
exclude header "ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h"
exclude header "ExecutionEngine/Orc/OrcRemoteTargetClient.h"
exclude header "ExecutionEngine/Orc/OrcRemoteTargetServer.h"
exclude header "ExecutionEngine/Orc/RemoteObjectLayer.h"
+
+ // Exclude headers from LLVM_OrcSupport.
+ exclude header "ExecutionEngine/Orc/OrcError.h"
+ exclude header "ExecutionEngine/Orc/RPC/RPCUtils.h"
+ exclude header "ExecutionEngine/Orc/RPC/RPCSerialization.h"
+ exclude header "ExecutionEngine/Orc/RPC/RawByteChannel.h"
+
+}
+
+// Orc utilities that don't depend only on Support (not ExecutionEngine or
+// IR). This is a workaround for ExecutionEngine's broken layering, and will
+// be removed in the future.
+module LLVM_OrcSupport {
+ requires cplusplus
+
+ header "ExecutionEngine/Orc/OrcError.h"
+ header "ExecutionEngine/Orc/RPC/RPCUtils.h"
+ header "ExecutionEngine/Orc/RPC/RPCSerialization.h"
+ header "ExecutionEngine/Orc/RPC/RawByteChannel.h"
+
+ export *
}
module LLVM_Pass {
diff --git a/llvm/lib/ExecutionEngine/OrcError/OrcError.cpp b/llvm/lib/ExecutionEngine/OrcError/OrcError.cpp
index e6e9a095319..5eab246d4b4 100644
--- a/llvm/lib/ExecutionEngine/OrcError/OrcError.cpp
+++ b/llvm/lib/ExecutionEngine/OrcError/OrcError.cpp
@@ -14,6 +14,8 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ManagedStatic.h"
+#include <type_traits>
+
using namespace llvm;
using namespace llvm::orc;
diff --git a/llvm/lib/ExecutionEngine/OrcError/RPCError.cpp b/llvm/lib/ExecutionEngine/OrcError/RPCError.cpp
index b77a526f571..3cf78fd9f7b 100644
--- a/llvm/lib/ExecutionEngine/OrcError/RPCError.cpp
+++ b/llvm/lib/ExecutionEngine/OrcError/RPCError.cpp
@@ -11,6 +11,11 @@
//===----------------------------------------------------------------------===//
#include "llvm/ExecutionEngine/Orc/RPC/RPCUtils.h"
+#include "llvm/Support/Error.h"
+#include "llvm/Support/raw_ostream.h"
+
+#include <system_error>
+#include <string>
char llvm::orc::rpc::RPCFatalError::ID = 0;
char llvm::orc::rpc::ConnectionClosed::ID = 0;
diff --git a/llvm/lib/Support/Error.cpp b/llvm/lib/Support/Error.cpp
index 9ea08c37478..27e0a49e9b8 100644
--- a/llvm/lib/Support/Error.cpp
+++ b/llvm/lib/Support/Error.cpp
@@ -10,6 +10,7 @@
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ManagedStatic.h"
+#include "llvm/Support/Signals.h"
#include <system_error>
using namespace llvm;
@@ -103,11 +104,13 @@ std::error_code errorToErrorCode(Error Err) {
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
void Error::fatalUncheckedError() const {
dbgs() << "Program aborted due to an unhandled Error:\n";
- if (getPtr())
+ if (getPtr()) {
getPtr()->log(dbgs());
- else
+ dbgs() << "\n";
+ }else
dbgs() << "Error value was Success. (Note: Success values must still be "
"checked prior to being destroyed).\n";
+ PrintStackTrace();
abort();
}
#endif
OpenPOWER on IntegriCloud