aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-08-27 00:38:44 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-08-27 00:38:44 +0000
commit0033c18c47a573c898a41b9cbaeb98118537ac28 (patch)
tree166e0afffff94cc79c46827c6665732beca914fa
parent07ea1917d00cb84474fc47a1050572d9c589501c (diff)
downloadexternal_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.cpp20
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) {