Changes in directory llvm/lib/Bitcode/Writer:
BitcodeWriter.cpp updated: 1.33 -> 1.34 --- Log message: shave another 150K off of kc++, by using a 7-bit encoding for BB names where we can. This shrinks kc++'s down to 3368K, with a VST record of: Block ID #14 (VALUE_SYMTAB): Num Instances: 2345 Total Size: 1.29508e+07b/1.61885e+06B/404713W Average Size: 5522.73b/690.342B/172.585W % of file: 48.0645 Tot/Avg SubBlocks: 0/0 Tot/Avg Abbrevs: 7035/3 Tot/Avg Records: 120924/51.5667 % Abbrev Recs: 100 Isn't it nice to be able to optimizer bc size without touching the reader? :) --- Diffs of the changes: (+12 -1) BitcodeWriter.cpp | 13 ++++++++++++- 1 files changed, 12 insertions(+), 1 deletion(-) Index: llvm/lib/Bitcode/Writer/BitcodeWriter.cpp diff -u llvm/lib/Bitcode/Writer/BitcodeWriter.cpp:1.33 llvm/lib/Bitcode/Writer/BitcodeWriter.cpp:1.34 --- llvm/lib/Bitcode/Writer/BitcodeWriter.cpp:1.33 Fri May 4 15:52:02 2007 +++ llvm/lib/Bitcode/Writer/BitcodeWriter.cpp Fri May 4 15:58:35 2007 @@ -32,7 +32,8 @@ // VALUE_SYMTAB_BLOCK abbrev id's. VST_ENTRY_8_ABBREV = bitc::FIRST_APPLICATION_ABBREV, - VST_ENTRY_7_ABBREV + VST_ENTRY_7_ABBREV, + VST_BBENTRY_7_ABBREV }; @@ -732,6 +733,15 @@ if (Stream.EmitAbbrev(Abbv) != VST_ENTRY_7_ABBREV) assert(0 && "Unexpected abbrev ordering!"); } + { // 7-bit fixed width VST_BBENTRY strings. + BitCodeAbbrev *Abbv = new BitCodeAbbrev(); + Abbv->Add(BitCodeAbbrevOp(bitc::VST_CODE_BBENTRY)); + Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); + Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array)); + Abbv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 7)); + if (Stream.EmitAbbrev(Abbv) != VST_BBENTRY_7_ABBREV) + assert(0 && "Unexpected abbrev ordering!"); + } // FIXME: Set up the abbrev, we know how many values there are! @@ -759,6 +769,7 @@ unsigned Code; if (isa<BasicBlock>(SI->getValue())) { Code = bitc::VST_CODE_BBENTRY; + if (is7Bit) AbbrevToUse = VST_BBENTRY_7_ABBREV; } else { Code = bitc::VST_CODE_ENTRY; AbbrevToUse = is7Bit ? VST_ENTRY_7_ABBREV : VST_ENTRY_8_ABBREV; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits