[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