================
@@ -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
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits