diff options
-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); |