[llvm] [offload] add context to olMemAlloc* (PR #222677)

Jan Trusiłło via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 11 04:17:56 PDT 2026


================
@@ -488,6 +490,54 @@ struct GenELF64PluginContextTy final : public PluginContextTy {
   Error initAsyncInfoImpl(GenericDeviceTy &, AsyncInfoWrapperTy &) override {
     return Plugin::success();
   }
+
+  Expected<void *> allocate(GenericDeviceTy &Device, int64_t Size,
+                            TargetAllocTy Kind, size_t Alignment) override {
+    auto PtrOrErr = PluginContextTy::allocate(Device, Size, Kind, Alignment);
+    if (!PtrOrErr)
+      return PtrOrErr.takeError();
+    void *Ptr = *PtrOrErr;
+    std::lock_guard<std::mutex> Lock(AllocsMutex);
+    Allocs[Ptr] = Entry{&Device, Kind, static_cast<size_t>(Size)};
+    return Ptr;
+  }
+
+  Error deallocate(GenericDeviceTy &Device, void *Ptr,
+                   TargetAllocTy Kind) override {
+    {
+      std::lock_guard<std::mutex> Lock(AllocsMutex);
+      Allocs.erase(Ptr);
+    }
+    return PluginContextTy::deallocate(Device, Ptr, Kind);
+  }
+
+  Expected<PluginAllocInfoTy> getAllocInfo(const void *Ptr) override {
+    std::lock_guard<std::mutex> Lock(AllocsMutex);
+    if (Allocs.empty())
----------------
311Volt wrote:

`upper_bound() == begin()` handles an empty map properly, so this check is not needed

https://github.com/llvm/llvm-project/pull/222677


More information about the llvm-commits mailing list