[llvm-branch-commits] [llvm] [Offloading] Add support for compressed OffloadBinary types (PR #222774)

Joseph Huber via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Sep 10 19:27:20 PDT 2026


================
@@ -70,23 +59,18 @@ Error extractOffloadFiles(MemoryBufferRef Contents,
       return HeaderOrErr.takeError();
     const OffloadBinary::Header *Header = *HeaderOrErr;
 
-    // Create a copy of original memory containing only the current binary.
-    std::unique_ptr<MemoryBuffer> BufferCopy = MemoryBuffer::getMemBufferCopy(
-        Buffer->getBuffer().take_front(Header->Size),
-        Contents.getBufferIdentifier());
-
-    auto BinariesOrErr = OffloadBinary::create(*BufferCopy);
+    MemoryBufferRef Slice(Buffer->getBuffer().take_front(Header->Size),
+                          Contents.getBufferIdentifier());
+    auto BinariesOrErr = OffloadBinary::create(Slice);
     if (!BinariesOrErr)
       return BinariesOrErr.takeError();
 
-    // Share ownership among multiple OffloadFiles.
-    std::shared_ptr<MemoryBuffer> SharedBuffer =
-        std::shared_ptr<MemoryBuffer>(std::move(BufferCopy));
-
     for (auto &Binary : *BinariesOrErr) {
-      std::unique_ptr<SharedMemoryBuffer> SharedBufferPtr =
-          std::make_unique<SharedMemoryBuffer>(SharedBuffer);
-      Binaries.emplace_back(std::move(Binary), std::move(SharedBufferPtr));
+      std::unique_ptr<MemoryBuffer> View = MemoryBuffer::getMemBuffer(
+          Binary->getMemoryBufferRef().getBuffer(),
+          Binary->getMemoryBufferRef().getBufferIdentifier(),
+          /*RequiresNullTerminator=*/false);
+      Binaries.emplace_back(std::move(Binary), std::move(View));
     }
 
     Offset += Header->Size;
----------------
jhuber6 wrote:

Right, forgot that the compression will undo the alignment handling elserwhere.

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


More information about the llvm-branch-commits mailing list