diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-08-27 00:38:44 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-08-27 00:38:44 +0000 |
commit | 0033c18c47a573c898a41b9cbaeb98118537ac28 (patch) | |
tree | 166e0afffff94cc79c46827c6665732beca914fa | |
parent | 07ea1917d00cb84474fc47a1050572d9c589501c (diff) | |
download | external_llvm-0033c18c47a573c898a41b9cbaeb98118537ac28.zip external_llvm-0033c18c47a573c898a41b9cbaeb98118537ac28.tar.gz external_llvm-0033c18c47a573c898a41b9cbaeb98118537ac28.tar.bz2 |
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
-rw-r--r-- | lib/Bytecode/Writer/Writer.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/Bytecode/Writer/Writer.cpp b/lib/Bytecode/Writer/Writer.cpp index 6654fd1..7db2148 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<std::vector<const Value*> > &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<std::vector<const Value*> > &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) { |