llvm::MemoryBuffer::getFileOrSTDIN(KeyAndValue.getValue());
if (std::error_code EC = ObjectOrErr.getError())
return reportError(errorCodeToError(EC));
- DeviceImage = std::move(*ObjectOrErr);
- ImageBinary.Image = *DeviceImage;
+ ImageBinary.Image = std::move(*ObjectOrErr);
ImageBinary.TheImageKind = getImageKind(
sys::path::extension(KeyAndValue.getValue()).drop_front());
} else if (Key == "kind") {
OffloadKind TheOffloadKind;
uint32_t Flags;
StringMap<StringRef> StringData;
- MemoryBufferRef Image;
+ std::unique_ptr<MemoryBuffer> Image;
};
/// Attempt to parse the offloading binary stored in \p Data.
// header so this can be placed contiguously in a single section.
Header TheHeader;
TheHeader.Size = alignTo(
- BinaryDataSize + OffloadingData.Image.getBufferSize(), getAlignment());
+ BinaryDataSize + OffloadingData.Image->getBufferSize(), getAlignment());
TheHeader.EntryOffset = sizeof(Header);
TheHeader.EntrySize = sizeof(Entry);
TheEntry.NumStrings = OffloadingData.StringData.size();
TheEntry.ImageOffset = BinaryDataSize;
- TheEntry.ImageSize = OffloadingData.Image.getBufferSize();
+ TheEntry.ImageSize = OffloadingData.Image->getBufferSize();
SmallVector<char, 1024> Data;
raw_svector_ostream OS(Data);
StrTab.write(OS);
// Add padding to required image alignment.
OS.write_zeros(TheEntry.ImageOffset - OS.tell());
- OS << OffloadingData.Image.getBuffer();
+ OS << OffloadingData.Image->getBuffer();
// Add final padding to required alignment.
assert(TheHeader.Size >= OS.tell() && "Too much data written?");
Data.TheOffloadKind = static_cast<OffloadKind>(KindDist(Rng));
Data.Flags = KindDist(Rng);
Data.StringData = StringData;
- Data.Image = *ImageData;
+ Data.Image = std::move(ImageData);
auto BinaryBuffer = OffloadBinary::write(Data);
ASSERT_TRUE(StringData[KeyAndValue.first] ==
Binary.getString(KeyAndValue.first));
- EXPECT_TRUE(Data.Image.getBuffer() == Binary.getImage());
+ EXPECT_TRUE(Data.Image->getBuffer() == Binary.getImage());
// Ensure the size and alignment of the data is correct.
EXPECT_TRUE(Binary.getSize() % OffloadBinary::getAlignment() == 0);