As discussed in RFC, this patch does the following
- Changes the raw format to support compression
- Keeps the indexed format version
- change the coverage map format but in backward compatible way.
There is no user level tool interface/usability change.
The impact of this patch -- for clang build with -fprofile-instr-generate -fcoverage-mapping and GC ,
- Instrumented clang size is reduced from 273M to 201M -- a 72 MB reduction (in text and data)
- Total input object size to linker is reduced from 1187 MB to 913 MB -- a 274 MB reduction
- Raw profile size is reduced from 147 MB to 75 MB
This patch only include the LLVM change.
- the main compile-rt change just need to update InstrProfData.inc
- there are about 4 test cases that need to update raw profile data (binary)
- there are a few expected .ll file change
- For platforms (not linux, freebsd, nor mach-o) that do not support finding section start/end with special symbols, compiler runtime change is needed to add a name section registration -- It will be in a different patch.