================
@@ -99,7 +99,10 @@ struct GenELF64KernelTy : public GenericKernelTy {
                            "cooperative kernel launch not supported for host");
     // TODO: The data will need to be copied locally if we ever support
     //       asynchronous kernel launches in the host interface.
-    Func(LaunchParams.Data);
+    llvm::SmallVector<void *, 16> Buffer(LaunchParams.NumArgs);
+    for (uint32_t I = 0; I < LaunchParams.NumArgs; ++I)
+      Buffer[I] = *reinterpret_cast<void **>(LaunchParams.Args[I]);
+    Func(LaunchParams.NumArgs ? Buffer.data() : nullptr);
----------------
pbalcer wrote:

I started working on the same cleanup, and I approached the host plugin launch 
kernel slightly differently, see this 
[PR](https://github.com/llvm/llvm-project/pull/205355). Converting the argument 
pointers array to a flat buffer will work only as long as arguments are 
pointer-sized. Which is fine for OpenMP, but might become a problem once we 
start using the host plugin elsewhere (like in SYCL, but I know this would 
require far more changes to this plugin).

https://github.com/llvm/llvm-project/pull/205224
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to