[llvm-commits] CVS: llvm/lib/Bitcode/Writer/BitcodeWriter.cpp

Chris Lattner sabre at nondot.org
Fri May 4 13:58:52 PDT 2007



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;






More information about the llvm-commits mailing list