[llvm] [offload] add handling of memory alignment to MemoryManagerTy (PR #218418)

Jan Trusiłło via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 26 03:36:58 PDT 2026


================
@@ -264,32 +281,55 @@ class MemoryManagerTy {
       ODBG(OLDT_Alloc) << "Got target pointer " << *TgtPtrOrErr
                        << ". Return directly.";
 
+      if (Alignment > 0 && !isAddrAligned(Align(Alignment), *TgtPtrOrErr)) {
+        auto AlignErr = make_error<StringError>(
+            "Allocated address is misaligned", inconvertibleErrorCode());
+        if (auto FreeErr = deleteOnDevice(*TgtPtrOrErr)) {
+          return joinErrors(std::move(FreeErr), std::move(AlignErr));
+        }
+
+        return AlignErr;
+      }
+
       return *TgtPtrOrErr;
     }
 
+    if (Alignment > 0) {
+      Size += Alignment - 1;
----------------
311Volt wrote:

It is, you first need to know the size to pick the bucket, and you don't know anything about the pointers within the buckets so you need to assume worst-case.

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


More information about the llvm-commits mailing list