[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 20:08:15 PDT 2026
================
@@ -50,6 +55,25 @@ Expected<OffloadYAML::Binary *> dump(MemoryBufferRef Source,
while (Offset < Source.getBufferSize()) {
MemoryBufferRef Buffer = MemoryBufferRef(
Source.getBuffer().drop_front(Offset), Source.getBufferIdentifier());
+ std::unique_ptr<MemoryBuffer> Aligned;
+ if (!isAddrAligned(Align(object::OffloadBinary::getAlignment()),
+ Buffer.getBufferStart())) {
+ Aligned = MemoryBuffer::getMemBufferCopy(Buffer.getBuffer(),
+ Buffer.getBufferIdentifier());
+ Buffer = *Aligned;
+ }
+ auto HeaderOrErr = object::OffloadBinary::extractHeader(Buffer);
+ if (!HeaderOrErr)
+ return HeaderOrErr.takeError();
+ const object::OffloadBinary::Header *TheHeader = *HeaderOrErr;
+ uint64_t Size = TheHeader->Size;
+ if (TheHeader->Version >= 3 && TheHeader->InflatedSize != 0) {
+ StringRef Payload = Buffer.getBuffer().take_front(Size).drop_front(
+ TheHeader->EntriesOffset);
+ YAMLBinary->Compression = identify_magic(Payload) == file_magic::zstd
+ ? compression::Format::Zstd
+ : compression::Format::Zlib;
----------------
jhuber6 wrote:
It's just a ternary, I think it's easier to just keep it separate than expand the public API.
https://github.com/llvm/llvm-project/pull/222774
More information about the llvm-branch-commits
mailing list