[PATCH] Bitcode: Collect all MDString records into a single blob

Duncan P. N. Exon Smith via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 24 16:05:38 PDT 2016

Optimize output of MDStrings in bitcode.  This emits them in big blocks
(currently 1024) in a pair of records:
- BULK_STRING_SIZES: the sizes of the strings in the block, and
- BULK_STRING_DATA: a single blob, which is the concatenation of all the

Inspired by Mehdi's similar patch, http://reviews.llvm.org/D18342, this
should (a) slightly reduce bitcode size, since there is less record
overhead, and (b) greatly improve reading speed, since blobs are super
cheap to deserialize.

I needed to add support for blobs to streaming input to get the test
suite passing.
 - StreamingMemoryObject::getPointer reads ahead and returns the address
   of the blob.
 - To avoid a possible reallocation of StreamingMemoryObject::Bytes,
   BitstreamCursor::readRecord needs to move the call to JumpToEnd
   forward so that getPointer is the last bitstream operation.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Bitcode-Collect-all-MDString-records-into-a-single-b.patch
Type: application/octet-stream
Size: 17330 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160324/d9680935/attachment.obj>

More information about the llvm-commits mailing list