llvm-project/llvm/test
Duncan P. N. Exon Smith 6565a0d4b2 Reapply ~"Bitcode: Collect all MDString records into a single blob"
Spiritually reapply commit r264409 (reverted in r264410), albeit with a
bit of a redesign.

Firstly, avoid splitting the big blob into multiple chunks of strings.

r264409 imposed an arbitrary limit to avoid a massive allocation on the
shared 'Record' SmallVector.  The bug with that commit only reproduced
when there were more than "chunk-size" strings.  A test for this would
have been useless long-term, since we're liable to adjust the chunk-size
in the future.

Thus, eliminate the motivation for chunk-ing by storing the string sizes
in the blob.  Here's the layout:

    vbr6: # of strings
    vbr6: offset-to-blob
    blob:
       [vbr6]: string lengths
       [char]: concatenated strings

Secondly, make the output of llvm-bcanalyzer readable.

I noticed when debugging r264409 that llvm-bcanalyzer was outputting a
massive blob all in one line.  Past a small number, the strings were
impossible to split in my head, and the lines were way too long.  This
version adds support in llvm-bcanalyzer for pretty-printing.

    <STRINGS abbrevid=4 op0=3 op1=9/> num-strings = 3 {
      'abc'
      'def'
      'ghi'
    }

From the original commit:

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.

llvm-svn: 264551
2016-03-27 23:17:54 +00:00
..
Analysis AMDGPU: Cost model for basic integer operations 2016-03-25 01:16:40 +00:00
Assembler IR: Stop upgrading !llvm.loop attachments via MDString 2016-03-25 00:56:13 +00:00
Bindings Expose IRBuilder::CreateAtomicCmpXchg as LLVMBuildAtomicCmpXchg in the C API. 2016-03-19 21:28:28 +00:00
Bitcode Reapply ~"Bitcode: Collect all MDString records into a single blob" 2016-03-27 23:17:54 +00:00
BugPoint
CodeGen [PowerPC] Map max/minnum intrinsics and fmax/fmin to ISD nodes for CTR-based loop legality 2016-03-27 05:40:56 +00:00
DebugInfo Consider regmasks when computing register-based DBG_VALUE live ranges 2016-03-25 17:54:46 +00:00
Examples
ExecutionEngine Disable the new Orc lazy JIT tests on Windows, they do not pass 2016-02-10 18:46:42 +00:00
Feature [NVVM] Remove noduplicate attribute from synchronizing intrinsics. 2016-03-22 22:08:01 +00:00
FileCheck Reapply r262092: [FileCheck] Abort if -NOT is combined with another suffix. 2016-02-29 22:13:03 +00:00
Instrumentation [msan] Don't put module constructors in comdats. 2016-03-15 20:25:47 +00:00
Integer
JitListener
LTO Rename embedded bitcode section in MachO 2016-02-29 19:40:10 +00:00
LibDriver
Linker Fix another case where we were unconditionally linking linkonce GVs. 2016-03-24 15:23:01 +00:00
MC [Power9] Implement new altivec instructions: permute, count zero, extend sign, negate, parity, shift/rotate, mul10 2016-03-26 05:46:11 +00:00
Object [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
Other [CG] Add a new pass manager printer pass for the old call graph and 2016-03-10 11:24:11 +00:00
SymbolRewriter
TableGen [GlobalISel][Target] Add an opcode for unconditional branch. 2016-03-11 17:27:38 +00:00
ThinLTO/X86 [ThinLTO] Renaming of function index to module summary index (NFC) 2016-03-15 00:04:37 +00:00
Transforms Use DAG check to try to appease bot 2016-03-27 15:36:43 +00:00
Unit [lit] Hack lit to allow a test suite to request that it is run "early". 2016-03-12 03:03:31 +00:00
Verifier [Verifier] Reject PHIs using defs from own block. 2016-03-26 23:32:57 +00:00
YAMLParser
tools llvm-dwp: Include the dwo name (if available) when diagnosing duplicate CU IDs from dwp input files 2016-03-26 20:32:14 +00:00
.clang-format
CMakeLists.txt [CMake] Add convenience target llvm-test-depends to build test dependencies. 2016-03-02 00:27:14 +00:00
TestRunner.sh
lit.cfg [lit] Teach lit about global-isel requirement. 2016-03-08 00:03:40 +00:00
lit.site.cfg.in