[PATCH] D87339: [NFC][ThinLTO] Let llvm::EmbedBitcodeInModule handle serialization.
Mircea Trofin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 10 10:12:28 PDT 2020
mtrofin updated this revision to Diff 291017.
mtrofin marked 2 inline comments as done.
mtrofin added a comment.
comments
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D87339/new/
https://reviews.llvm.org/D87339
Files:
llvm/include/llvm/Bitcode/BitcodeWriter.h
llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
llvm/lib/LTO/LTOBackend.cpp
Index: llvm/lib/LTO/LTOBackend.cpp
===================================================================
--- llvm/lib/LTO/LTOBackend.cpp
+++ llvm/lib/LTO/LTOBackend.cpp
@@ -353,13 +353,7 @@
static void EmitBitcodeSection(Module &M) {
if (!EmbedBitcode)
return;
- SmallVector<char, 0> Buffer;
- raw_svector_ostream OS(Buffer);
- WriteBitcodeToFile(M, OS);
-
- std::unique_ptr<MemoryBuffer> Buf(
- new SmallVectorMemoryBuffer(std::move(Buffer)));
- llvm::EmbedBitcodeInModule(M, Buf->getMemBufferRef(), /*EmbedBitcode*/ true,
+ llvm::EmbedBitcodeInModule(M, llvm::MemoryBufferRef(), /*EmbedBitcode*/ true,
/*EmbedMarker*/ false, /*CmdArgs*/ nullptr);
}
Index: llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
===================================================================
--- llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+++ llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
@@ -4829,11 +4829,10 @@
std::string Data;
ArrayRef<uint8_t> ModuleData;
Triple T(M.getTargetTriple());
- // Create a constant that contains the bitcode.
- // In case of embedding a marker, ignore the input Buf and use the empty
- // ArrayRef. It is also legal to create a bitcode marker even Buf is empty.
+
if (EmbedBitcode) {
- if (!isBitcode((const unsigned char *)Buf.getBufferStart(),
+ if (Buf.getBufferSize() == 0 ||
+ !isBitcode((const unsigned char *)Buf.getBufferStart(),
(const unsigned char *)Buf.getBufferEnd())) {
// If the input is LLVM Assembly, bitcode is produced by serializing
// the module. Use-lists order need to be preserved in this case.
Index: llvm/include/llvm/Bitcode/BitcodeWriter.h
===================================================================
--- llvm/include/llvm/Bitcode/BitcodeWriter.h
+++ llvm/include/llvm/Bitcode/BitcodeWriter.h
@@ -153,6 +153,10 @@
*ModuleToSummariesForIndex = nullptr);
/// Save a copy of the llvm IR as data in the __LLVM,__bitcode section.
+ /// If available, pass the serialized module via the Buf parameter. If not,
+ /// pass an empty (default-initialized) MemoryBufferRef, and the serialization
+ /// will be handled by this API. The same behavior happens if the provided Buf
+ /// is not bitcode (LLVM assembly).
void EmbedBitcodeInModule(Module &M, MemoryBufferRef Buf, bool EmbedBitcode,
bool EmbedMarker,
const std::vector<uint8_t> *CmdArgs);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D87339.291017.patch
Type: text/x-patch
Size: 2487 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200910/a65de235/attachment.bin>
More information about the llvm-commits
mailing list