diff options
author | Lang Hames <lhames@gmail.com> | 2017-02-08 00:13:51 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2017-02-08 00:13:51 +0000 |
commit | 2fc2852ce461f2bf32658e948c339282bb5130c4 (patch) | |
tree | 628269006bca84c8db388a2f223103195ff32baa | |
parent | 4cdd915fdad4885f8dd4503bc07a6ab991bee2db (diff) | |
download | bcm5719-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.h | 5 | ||||
-rw-r--r-- | llvm/unittests/ExecutionEngine/Orc/RPCUtilsTest.cpp | 9 |
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); |