Do not bother to emit a BytecodeBlock for an empty symbol table. This commonly
authorChris Lattner <sabre@nondot.org>
Sat, 10 Jan 2004 19:56:59 +0000 (19:56 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 10 Jan 2004 19:56:59 +0000 (19:56 +0000)
occurs when the symbol table for a module has been stripped, making all of the
function local symbols go away.

This saves 6728 bytes in the stripped bytecode file of 254.gap (which obviously
has 841 functions), which isn't a ton, but helps and was easy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10750 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bytecode/Writer/Writer.cpp

index 0e541df72d0807a18c162f91b99ec738fbca5460..308f1e9e1ef2c980cb8426fdf9799132aa395c78 100644 (file)
@@ -236,6 +236,10 @@ void BytecodeWriter::outputFunction(const Function *F) {
 }
 
 void BytecodeWriter::outputSymbolTable(const SymbolTable &MST) {
+  // Do not output the Bytecode block for an empty symbol table, it just wastes
+  // space!
+  if (MST.begin() == MST.end()) return;
+
   BytecodeBlock FunctionBlock(BytecodeFormat::SymbolTable, Out);
 
   for (SymbolTable::const_iterator TI = MST.begin(); TI != MST.end(); ++TI) {