[llvm] [ORC] Remove EPC runAsVoidFunction/runAsIntFunction methods (PR #213265)
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 31 06:08:50 PDT 2026
https://github.com/lhames updated https://github.com/llvm/llvm-project/pull/213265
>From ffb38cb19062aee98f1a504cf624f381fda7d9d7 Mon Sep 17 00:00:00 2001
From: Lang Hames <lhames at gmail.com>
Date: Fri, 31 Jul 2026 21:06:38 +1000
Subject: [PATCH] [ORC] Remove EPC runAsVoidFunction/runAsIntFunction methods
Remove runAsVoidFunction and runAsIntFunction from
ExecutorProcessControl and all its implementations, along with the
now-unused RunAs{Void,Int}FunctionWrapperName bootstrap symbols and
SimpleRemoteEPC's corresponding address fields. Their only in-tree
users, COFFPlatform and COFFVCRuntimeSupport, now use
rt::sps::Int32VoidCaller and rt::sps::Int32Int32Caller.
runAsMain is likewise routed through rt::sps::MainCaller's controller-
interface symbol, so it is looked up under the same orc_rt_ci_sps_* name
the target-process bootstrap registers.
This is a step towards decoupling the ExecutorProcessControl interface
from SPS serialization.
---
.../Orc/ExecutorProcessControl.h | 9 -------
.../llvm/ExecutionEngine/Orc/InProcessEPC.h | 4 ---
.../Orc/SelfExecutorProcessControl.h | 4 ---
.../ExecutionEngine/Orc/Shared/OrcRTBridge.h | 6 -----
.../ExecutionEngine/Orc/SimpleRemoteEPC.h | 6 -----
llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp | 13 +++++++---
.../Orc/COFFVCRuntimeSupport.cpp | 25 +++++++++++--------
llvm/lib/ExecutionEngine/Orc/InProcessEPC.cpp | 11 --------
.../Orc/SelfExecutorProcessControl.cpp | 12 ---------
.../Orc/Shared/OrcRTBridge.cpp | 6 -----
.../ExecutionEngine/Orc/SimpleRemoteEPC.cpp | 24 +++---------------
.../Orc/TargetProcess/OrcRTBootstrap.cpp | 19 +++++++-------
.../ExecutionEngine/Orc/OrcTestCommon.h | 8 ------
13 files changed, 36 insertions(+), 111 deletions(-)
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h b/llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h
index 6e84932baa8a8..d69c71fe444b1 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h
@@ -192,15 +192,6 @@ class LLVM_ABI ExecutorProcessControl {
virtual Expected<int32_t> runAsMain(ExecutorAddr MainFnAddr,
ArrayRef<std::string> Args) = 0;
- // TODO: move this to ORC runtime.
- /// Run function with a int (*)(void) signature.
- virtual Expected<int32_t> runAsVoidFunction(ExecutorAddr VoidFnAddr) = 0;
-
- // TODO: move this to ORC runtime.
- /// Run function with a int (*)(int) signature.
- virtual Expected<int32_t> runAsIntFunction(ExecutorAddr IntFnAddr,
- int Arg) = 0;
-
/// Run a wrapper function in the executor. The given WFRHandler will be
/// called on the result when it is returned.
///
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/InProcessEPC.h b/llvm/include/llvm/ExecutionEngine/Orc/InProcessEPC.h
index 28ff1986eedfc..26772a645f13e 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/InProcessEPC.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/InProcessEPC.h
@@ -88,10 +88,6 @@ class LLVM_ABI InProcessEPC : public ExecutorProcessControl {
Expected<int32_t> runAsMain(ExecutorAddr MainFnAddr,
ArrayRef<std::string> Args) override;
- Expected<int32_t> runAsVoidFunction(ExecutorAddr VoidFnAddr) override;
-
- Expected<int32_t> runAsIntFunction(ExecutorAddr IntFnAddr, int Arg) override;
-
void callWrapperAsync(ExecutorAddr WrapperFnAddr,
IncomingWFRHandler OnComplete,
ArrayRef<char> ArgBuffer) override;
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/SelfExecutorProcessControl.h b/llvm/include/llvm/ExecutionEngine/Orc/SelfExecutorProcessControl.h
index 0cce7e4f37c78..d420ad9ee1aeb 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/SelfExecutorProcessControl.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/SelfExecutorProcessControl.h
@@ -39,10 +39,6 @@ class LLVM_ABI SelfExecutorProcessControl : public ExecutorProcessControl {
Expected<int32_t> runAsMain(ExecutorAddr MainFnAddr,
ArrayRef<std::string> Args) override;
- Expected<int32_t> runAsVoidFunction(ExecutorAddr VoidFnAddr) override;
-
- Expected<int32_t> runAsIntFunction(ExecutorAddr IntFnAddr, int Arg) override;
-
void callWrapperAsync(ExecutorAddr WrapperFnAddr,
IncomingWFRHandler OnComplete,
ArrayRef<char> ArgBuffer) override;
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
index 637e724109158..0946e8fbd6c57 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h
@@ -61,10 +61,6 @@ LLVM_ABI extern const char *DeregisterEHFrameSectionAllocActionName;
LLVM_ABI extern const char *RegisterJITLoaderGDBAllocActionName;
-LLVM_ABI extern const char *RunAsMainWrapperName;
-LLVM_ABI extern const char *RunAsVoidFunctionWrapperName;
-LLVM_ABI extern const char *RunAsIntFunctionWrapperName;
-
LLVM_ABI extern const char *const DispatchName;
LLVM_ABI extern const char *const DispatchCtxName;
@@ -157,8 +153,6 @@ using SPSSimpleRemoteMemoryMapReleaseSignature = shared::SPSError(
using SPSRunAsMainSignature = int64_t(shared::SPSExecutorAddr,
shared::SPSSequence<shared::SPSString>);
-using SPSRunAsVoidFunctionSignature = int32_t(shared::SPSExecutorAddr);
-using SPSRunAsIntFunctionSignature = int32_t(shared::SPSExecutorAddr, int32_t);
} // end namespace rt
namespace rt_alt {
diff --git a/llvm/include/llvm/ExecutionEngine/Orc/SimpleRemoteEPC.h b/llvm/include/llvm/ExecutionEngine/Orc/SimpleRemoteEPC.h
index 6527771fa34db..73e63145b0350 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/SimpleRemoteEPC.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/SimpleRemoteEPC.h
@@ -56,10 +56,6 @@ class LLVM_ABI SimpleRemoteEPC : public ExecutorProcessControl,
Expected<int32_t> runAsMain(ExecutorAddr MainFnAddr,
ArrayRef<std::string> Args) override;
- Expected<int32_t> runAsVoidFunction(ExecutorAddr VoidFnAddr) override;
-
- Expected<int32_t> runAsIntFunction(ExecutorAddr IntFnAddr, int Arg) override;
-
void callWrapperAsync(ExecutorAddr WrapperFnAddr,
IncomingWFRHandler OnComplete,
ArrayRef<char> ArgBuffer) override;
@@ -114,8 +110,6 @@ class LLVM_ABI SimpleRemoteEPC : public ExecutorProcessControl,
std::unique_ptr<SimpleRemoteEPCTransport> T;
ExecutorAddr RunAsMainAddr;
- ExecutorAddr RunAsVoidFunctionAddr;
- ExecutorAddr RunAsIntFunctionAddr;
uint64_t NextSeqNo = 0;
PendingCallWrapperResultsMap PendingCallWrapperResults;
diff --git a/llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp b/llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp
index a6ab398d0ed5b..d80a6f542858f 100644
--- a/llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp
@@ -13,9 +13,9 @@
#include "llvm/ExecutionEngine/Orc/DebugUtils.h"
#include "llvm/ExecutionEngine/Orc/LookupAndRecordAddrs.h"
#include "llvm/ExecutionEngine/Orc/ObjectFileInterface.h"
+#include "llvm/ExecutionEngine/Orc/RTBridge/SPS/Calls.h"
#include "llvm/ExecutionEngine/Orc/Shared/ObjectFormats.h"
#include "llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h"
-
#include "llvm/Object/COFF.h"
#include "llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h"
@@ -663,11 +663,13 @@ Error COFFPlatform::runBootstrapInitializers(JDBootstrapState &BState) {
Error COFFPlatform::runBootstrapSubsectionInitializers(JDBootstrapState &BState,
StringRef Start,
StringRef End) {
+ auto CallInitializer = rt::sps::Int32VoidCaller::Create(ES);
+ if (!CallInitializer)
+ return CallInitializer.takeError();
for (auto &Initializer : BState.Initializers)
if (Initializer.first >= Start && Initializer.first <= End &&
Initializer.second) {
- auto Res =
- ES.getExecutorProcessControl().runAsVoidFunction(Initializer.second);
+ auto Res = (*CallInitializer)(Initializer.second);
if (!Res)
return Res.takeError();
}
@@ -733,7 +735,10 @@ Error COFFPlatform::runSymbolIfExists(JITDylib &PlatformJD,
ES, LookupKind::Static, makeJITDylibSearchOrder(&PlatformJD),
{{ES.intern(SymbolName), &jit_function}});
if (!AfterCLookupErr) {
- auto Res = ES.getExecutorProcessControl().runAsVoidFunction(jit_function);
+ auto CallFn = rt::sps::Int32VoidCaller::Create(ES);
+ if (!CallFn)
+ return CallFn.takeError();
+ auto Res = (*CallFn)(jit_function);
if (!Res)
return Res.takeError();
return Error::success();
diff --git a/llvm/lib/ExecutionEngine/Orc/COFFVCRuntimeSupport.cpp b/llvm/lib/ExecutionEngine/Orc/COFFVCRuntimeSupport.cpp
index b47f566b24eb7..8e33734af1575 100644
--- a/llvm/lib/ExecutionEngine/Orc/COFFVCRuntimeSupport.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/COFFVCRuntimeSupport.cpp
@@ -11,6 +11,7 @@
#include "llvm/ExecutionEngine/Orc/COFF.h"
#include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
#include "llvm/ExecutionEngine/Orc/LookupAndRecordAddrs.h"
+#include "llvm/ExecutionEngine/Orc/RTBridge/SPS/Calls.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/WindowsDriver/MSVCPaths.h"
@@ -123,26 +124,28 @@ Error COFFVCRuntimeBootstrapper::initializeStaticVCRuntime(JITDylib &JD) {
&jit_scrt_initialize_default_local_stdio_options}}))
return Err;
- auto RunVoidInitFunc = [&](ExecutorAddr Addr) -> Error {
- if (auto Res = ES.getExecutorProcessControl().runAsVoidFunction(Addr))
- return Error::success();
- else
- return Res.takeError();
- };
+ auto CallInt32Void = rt::sps::Int32VoidCaller::Create(ES);
+ if (!CallInt32Void)
+ return CallInt32Void.takeError();
+
+ auto CallInt32Int32 = rt::sps::Int32Int32Caller::Create(ES);
+ if (!CallInt32Int32)
+ return CallInt32Int32.takeError();
- auto R =
- ES.getExecutorProcessControl().runAsIntFunction(jit_scrt_initialize, 0);
+ auto R = (*CallInt32Int32)(jit_scrt_initialize, 0);
if (!R)
return R.takeError();
- if (auto Err = RunVoidInitFunc(jit_scrt_dllmain_before_initialize_c))
+ if (auto Err =
+ (*CallInt32Void)(jit_scrt_dllmain_before_initialize_c).takeError())
return Err;
- if (auto Err = RunVoidInitFunc(jit_scrt_initialize_type_info))
+ if (auto Err = (*CallInt32Void)(jit_scrt_initialize_type_info).takeError())
return Err;
if (auto Err =
- RunVoidInitFunc(jit_scrt_initialize_default_local_stdio_options))
+ (*CallInt32Void)(jit_scrt_initialize_default_local_stdio_options)
+ .takeError())
return Err;
SymbolAliasMap Alias;
diff --git a/llvm/lib/ExecutionEngine/Orc/InProcessEPC.cpp b/llvm/lib/ExecutionEngine/Orc/InProcessEPC.cpp
index 70fa12138b88d..47c170d2d3e86 100644
--- a/llvm/lib/ExecutionEngine/Orc/InProcessEPC.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/InProcessEPC.cpp
@@ -134,17 +134,6 @@ Expected<int32_t> InProcessEPC::runAsMain(ExecutorAddr MainFnAddr,
return orc::runAsMain(MainFnAddr.toPtr<MainTy>(), Args);
}
-Expected<int32_t> InProcessEPC::runAsVoidFunction(ExecutorAddr VoidFnAddr) {
- using VoidTy = int (*)();
- return orc::runAsVoidFunction(VoidFnAddr.toPtr<VoidTy>());
-}
-
-Expected<int32_t> InProcessEPC::runAsIntFunction(ExecutorAddr IntFnAddr,
- int Arg) {
- using IntTy = int (*)(int);
- return orc::runAsIntFunction(IntFnAddr.toPtr<IntTy>(), Arg);
-}
-
void InProcessEPC::callWrapperAsync(ExecutorAddr WrapperFnAddr,
IncomingWFRHandler OnComplete,
ArrayRef<char> ArgBuffer) {
diff --git a/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp b/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
index bda9b55046e33..a79a2622372b6 100644
--- a/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/SelfExecutorProcessControl.cpp
@@ -85,18 +85,6 @@ SelfExecutorProcessControl::runAsMain(ExecutorAddr MainFnAddr,
return orc::runAsMain(MainFnAddr.toPtr<MainTy>(), Args);
}
-Expected<int32_t>
-SelfExecutorProcessControl::runAsVoidFunction(ExecutorAddr VoidFnAddr) {
- using VoidTy = int (*)();
- return orc::runAsVoidFunction(VoidFnAddr.toPtr<VoidTy>());
-}
-
-Expected<int32_t>
-SelfExecutorProcessControl::runAsIntFunction(ExecutorAddr IntFnAddr, int Arg) {
- using IntTy = int (*)(int);
- return orc::runAsIntFunction(IntFnAddr.toPtr<IntTy>(), Arg);
-}
-
void SelfExecutorProcessControl::callWrapperAsync(ExecutorAddr WrapperFnAddr,
IncomingWFRHandler SendResult,
ArrayRef<char> ArgBuffer) {
diff --git a/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp b/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp
index 2a46bd21f0dc9..7f3354fa49b32 100644
--- a/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/Shared/OrcRTBridge.cpp
@@ -79,12 +79,6 @@ const char *DeregisterEHFrameSectionAllocActionName =
const char *RegisterJITLoaderGDBAllocActionName =
"llvm_orc_registerJITLoaderGDBAllocAction";
-const char *RunAsMainWrapperName = "__llvm_orc_bootstrap_run_as_main_wrapper";
-const char *RunAsVoidFunctionWrapperName =
- "__llvm_orc_bootstrap_run_as_void_function_wrapper";
-const char *RunAsIntFunctionWrapperName =
- "__llvm_orc_bootstrap_run_as_int_function_wrapper";
-
const char *const DispatchName = "__orc_rt_jit_dispatch";
const char *const DispatchCtxName = "__orc_rt_jit_dispatch_ctx";
diff --git a/llvm/lib/ExecutionEngine/Orc/SimpleRemoteEPC.cpp b/llvm/lib/ExecutionEngine/Orc/SimpleRemoteEPC.cpp
index f09a721c4abfc..897b318d83cb4 100644
--- a/llvm/lib/ExecutionEngine/Orc/SimpleRemoteEPC.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/SimpleRemoteEPC.cpp
@@ -10,6 +10,7 @@
#include "llvm/ExecutionEngine/Orc/EPCGenericDylibManager.h"
#include "llvm/ExecutionEngine/Orc/EPCGenericJITLinkMemoryManager.h"
#include "llvm/ExecutionEngine/Orc/EPCGenericMemoryAccess.h"
+#include "llvm/ExecutionEngine/Orc/RTBridge/SPS/Calls.h"
#include "llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h"
#include "llvm/Support/FormatVariadic.h"
@@ -34,23 +35,6 @@ Expected<int32_t> SimpleRemoteEPC::runAsMain(ExecutorAddr MainFnAddr,
return Result;
}
-Expected<int32_t> SimpleRemoteEPC::runAsVoidFunction(ExecutorAddr VoidFnAddr) {
- int32_t Result = 0;
- if (auto Err = callSPSWrapper<rt::SPSRunAsVoidFunctionSignature>(
- RunAsVoidFunctionAddr, Result, VoidFnAddr))
- return std::move(Err);
- return Result;
-}
-
-Expected<int32_t> SimpleRemoteEPC::runAsIntFunction(ExecutorAddr IntFnAddr,
- int Arg) {
- int32_t Result = 0;
- if (auto Err = callSPSWrapper<rt::SPSRunAsIntFunctionSignature>(
- RunAsIntFunctionAddr, Result, IntFnAddr, Arg))
- return std::move(Err);
- return Result;
-}
-
void SimpleRemoteEPC::callWrapperAsync(ExecutorAddr WrapperFnAddr,
IncomingWFRHandler OnComplete,
ArrayRef<char> ArgBuffer) {
@@ -343,10 +327,8 @@ Error SimpleRemoteEPC::setup() {
BootstrapSymbols[rt::DispatchCtxName] =
BootstrapSymbols[ExecutorSessionObjectName];
- if (auto Err = getBootstrapSymbols(
- {{RunAsMainAddr, rt::RunAsMainWrapperName},
- {RunAsVoidFunctionAddr, rt::RunAsVoidFunctionWrapperName},
- {RunAsIntFunctionAddr, rt::RunAsIntFunctionWrapperName}}))
+ if (auto Err =
+ getBootstrapSymbols({{RunAsMainAddr, rt::sps::CallMainCIName}}))
return Err;
return Error::success();
diff --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp
index 475295a81d16c..c0327713e6046 100644
--- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp
+++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp
@@ -8,6 +8,7 @@
#include "OrcRTBootstrap.h"
+#include "llvm/ExecutionEngine/Orc/RTBridge/SPS/Calls.h"
#include "llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h"
#include "llvm/ExecutionEngine/Orc/Shared/WrapperFunctionUtils.h"
#include "llvm/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.h"
@@ -135,8 +136,8 @@ runAsMainWrapper(const char *ArgData, size_t ArgSize) {
}
static llvm::orc::shared::CWrapperFunctionBuffer
-runAsVoidFunctionWrapper(const char *ArgData, size_t ArgSize) {
- return WrapperFunction<rt::SPSRunAsVoidFunctionSignature>::handle(
+runAsInt32VoidFunctionWrapper(const char *ArgData, size_t ArgSize) {
+ return WrapperFunction<rt::sps::CallInt32VoidSPSSig>::handle(
ArgData, ArgSize,
[](ExecutorAddr MainAddr) -> int32_t {
return runAsVoidFunction(MainAddr.toPtr<int32_t (*)(void)>());
@@ -145,8 +146,8 @@ runAsVoidFunctionWrapper(const char *ArgData, size_t ArgSize) {
}
static llvm::orc::shared::CWrapperFunctionBuffer
-runAsIntFunctionWrapper(const char *ArgData, size_t ArgSize) {
- return WrapperFunction<rt::SPSRunAsIntFunctionSignature>::handle(
+runAsInt32Int32FunctionWrapper(const char *ArgData, size_t ArgSize) {
+ return WrapperFunction<rt::sps::CallInt32Int32SPSSig>::handle(
ArgData, ArgSize,
[](ExecutorAddr MainAddr, int32_t Arg) -> int32_t {
return runAsIntFunction(MainAddr.toPtr<int32_t (*)(int32_t)>(),
@@ -186,11 +187,11 @@ void addTo(StringMap<ExecutorAddr> &M) {
ExecutorAddr::fromPtr(&readBuffersWrapper);
M[rt::MemoryReadStringsWrapperName] =
ExecutorAddr::fromPtr(&readStringsWrapper);
- M[rt::RunAsMainWrapperName] = ExecutorAddr::fromPtr(&runAsMainWrapper);
- M[rt::RunAsVoidFunctionWrapperName] =
- ExecutorAddr::fromPtr(&runAsVoidFunctionWrapper);
- M[rt::RunAsIntFunctionWrapperName] =
- ExecutorAddr::fromPtr(&runAsIntFunctionWrapper);
+ M[rt::sps::CallMainCIName] = ExecutorAddr::fromPtr(&runAsMainWrapper);
+ M[rt::sps::CallInt32VoidCIName] =
+ ExecutorAddr::fromPtr(&runAsInt32VoidFunctionWrapper);
+ M[rt::sps::CallInt32Int32CIName] =
+ ExecutorAddr::fromPtr(&runAsInt32Int32FunctionWrapper);
}
} // end namespace rt_bootstrap
diff --git a/llvm/unittests/ExecutionEngine/Orc/OrcTestCommon.h b/llvm/unittests/ExecutionEngine/Orc/OrcTestCommon.h
index 10145b5b546df..b2afed2eabac2 100644
--- a/llvm/unittests/ExecutionEngine/Orc/OrcTestCommon.h
+++ b/llvm/unittests/ExecutionEngine/Orc/OrcTestCommon.h
@@ -106,14 +106,6 @@ class UnsupportedExecutorProcessControl : public ExecutorProcessControl,
llvm_unreachable("Unsupported");
}
- Expected<int32_t> runAsVoidFunction(ExecutorAddr VoidFnAddr) override {
- llvm_unreachable("Unsupported");
- }
-
- Expected<int32_t> runAsIntFunction(ExecutorAddr IntFnAddr, int Arg) override {
- llvm_unreachable("Unsupported");
- }
-
void callWrapperAsync(ExecutorAddr WrapperFnAddr,
IncomingWFRHandler OnComplete,
ArrayRef<char> ArgBuffer) override {
More information about the llvm-commits
mailing list