summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2017-02-08 00:13:51 +0000
committerLang Hames <lhames@gmail.com>2017-02-08 00:13:51 +0000
commit2fc2852ce461f2bf32658e948c339282bb5130c4 (patch)
tree628269006bca84c8db388a2f223103195ff32baa
parent4cdd915fdad4885f8dd4503bc07a6ab991bee2db (diff)
downloadbcm5719-llvm-2fc2852ce461f2bf32658e948c339282bb5130c4.tar.gz
bcm5719-llvm-2fc2852ce461f2bf32658e948c339282bb5130c4.zip
[Orc][RPC] Add a HandlerTratis specialization for free functions.
llvm-svn: 294392
-rw-r--r--llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h5
-rw-r--r--llvm/unittests/ExecutionEngine/Orc/RPCUtilsTest.cpp9
2 files changed, 14 insertions, 0 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h b/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h
index c0ea94897be..be620d4f0d7 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h
@@ -417,6 +417,11 @@ private:
}
};
+// Handler traits for free functions.
+template <typename RetT, typename... ArgTs>
+class HandlerTraits<RetT(*)(ArgTs...)>
+ : public HandlerTraits<RetT(ArgTs...)> {};
+
// Handler traits for class methods (especially call operators for lambdas).
template <typename Class, typename RetT, typename... ArgTs>
class HandlerTraits<RetT (Class::*)(ArgTs...)>
diff --git a/llvm/unittests/ExecutionEngine/Orc/RPCUtilsTest.cpp b/llvm/unittests/ExecutionEngine/Orc/RPCUtilsTest.cpp
index d21a4acc08d..71de38db442 100644
--- a/llvm/unittests/ExecutionEngine/Orc/RPCUtilsTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/RPCUtilsTest.cpp
@@ -145,6 +145,15 @@ private:
};
+void freeVoidBool(bool B) {
+};
+
+TEST(DummyRPC, TestFreeFunctionHandler) {
+ Queue Q1, Q2;
+ DummyRPCEndpoint Server(Q2, Q1);
+ Server.addHandler<DummyRPCAPI::VoidBool>(freeVoidBool);
+};
+
TEST(DummyRPC, TestAsyncVoidBool) {
Queue Q1, Q2;
DummyRPCEndpoint Client(Q1, Q2);
OpenPOWER on IntegriCloud