[cfe-dev] code coverage instrumentation

Moshtaghi, Alireza Alireza.Moshtaghi at netapp.com
Thu Apr 9 11:25:14 PDT 2015


Hi
Not sure if this is a clang or llvm related question so I'm sending to both mailing lists.
Anyways, I have few questions regarding size and execution time of instrumented code:
We are trying to run code coverage on memory limited hardware and investigating both (generating gcov output using -coverage and the llvm's own way using -fprofile-instr-generate -fcoverage-mapping clang flags) In my questions I refer to the two methods as llgcov-way and llcovprof-way respectively.

Q1- How come size of instrumented code in llgcov-way turns bigger than llcovprof-way? I would imagine the other way because mapping information would go to *.gcno files.

Q2- The instrumented executable size of both llgcov-way and llcovprof-way (with and without optimization) is bloated 2x to 10x or in some cases 50x depending on the program. Here is output of size command for the variations on a simple test program that I wrote:
   text    data     bss     dec     hex filename
   5625     700    1696    8021    1f55 simpletest.-O0-g.llcovprof.
  12838     776    1808   15422    3c3e simpletest.-O0-g.llgcov.
   1481     492    1616    3589     e05 simpletest.-O0.none
   5337     700    1696    7733    1e35 simpletest.-O1-g.llcovprof.
  12246     776    1792   14814    39de simpletest.-O1-g.llgcov.
   1345     492    1616    3453     d7d simpletest.-O1.none
I was wondering if there is any suggestion for reducing the size either through more optimization or by compromising some feature.

Q3- in llcovprof-way since the runtime profile data is collected in a single file, the file system will serialize multi threaded writes, hence increasing the execution time. Is there a way to avoid this?

Thanks
Ali
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150409/d45d4f1c/attachment.html>


More information about the cfe-dev mailing list