From 0033c18c47a573c898a41b9cbaeb98118537ac28 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Fri, 27 Aug 2004 00:38:44 +0000 Subject: [PATCH] Prevent an empty compaction table from being written to the bytecode file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16063 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Bytecode/Writer/Writer.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp index 6654fd1b023..7db21486034 100644 --- a/lib/Bytecode/Writer/Writer.cpp +++ b/lib/Bytecode/Writer/Writer.cpp @@ -1034,15 +1034,19 @@ void BytecodeWriter::outputCompactionTypes(unsigned StartNo) { } void BytecodeWriter::outputCompactionTable() { - BytecodeBlock CTB(BytecodeFormat::CompactionTableBlockID, *this, - true/*ElideIfEmpty*/); - const std::vector > &CT =Table.getCompactionTable(); - - // First thing is first, emit the type compaction table if there is one. - outputCompactionTypes(Type::FirstDerivedTyID); + // Avoid writing the compaction table at all if there is no content. + if (Table.getCompactionTypes().size() >= Type::FirstDerivedTyID || + (!Table.CompactionTableIsEmpty())) { + BytecodeBlock CTB(BytecodeFormat::CompactionTableBlockID, *this, + true/*ElideIfEmpty*/); + const std::vector > &CT =Table.getCompactionTable(); + + // First things first, emit the type compaction table if there is one. + outputCompactionTypes(Type::FirstDerivedTyID); - for (unsigned i = 0, e = CT.size(); i != e; ++i) - outputCompactionTablePlane(i, CT[i], 0); + for (unsigned i = 0, e = CT.size(); i != e; ++i) + outputCompactionTablePlane(i, CT[i], 0); + } } void BytecodeWriter::outputSymbolTable(const SymbolTable &MST) { -- 2.11.0