Index: lib/Serialization/ASTWriter.cpp =================================================================== --- lib/Serialization/ASTWriter.cpp +++ lib/Serialization/ASTWriter.cpp @@ -2207,14 +2207,17 @@ // Compress the buffer if possible. We expect that almost all PCM // consumers will not want its contents. - SmallString<0> CompressedBuffer; + std::unique_ptr<uint8_t[]> CompressedData; + size_t CompressedSize; if (llvm::zlib::isAvailable()) { - llvm::Error E = llvm::zlib::compress(Blob.drop_back(1), CompressedBuffer); + llvm::Error E = + llvm::zlib::compress(Blob.drop_back(1), CompressedData, CompressedSize); if (!E) { RecordDataType Record[] = {SM_SLOC_BUFFER_BLOB_COMPRESSED, Blob.size() - 1}; - Stream.EmitRecordWithBlob(SLocBufferBlobCompressedAbbrv, Record, - CompressedBuffer); + Stream.EmitRecordWithBlob( + SLocBufferBlobCompressedAbbrv, Record, + StringRef((char *)CompressedData.get(), CompressedSize)); return; } llvm::consumeError(std::move(E));