ZequanWu wrote:

> The problem that this solves is related to binary size. In situations where a 
> large C API is in generated code but a small part of the API is used, the 
> size of __llvm_prf_names and __llvm_cov_fun sections can be prohibitively 
> large. This flag offers a way to reduce binary size in this case assuming you 
> aren't concerned with coverage of non-emitted code.

There's some ways to reduce the instrumented binary size on code coverage.
1. Single byte counter: 
https://discourse.llvm.org/t/rfc-single-byte-counters-for-source-based-code-coverage/75685.
 If you don't care about the exact number of execution of of covered regions 
and just want to know if those regions ever got executed, this is a good option 
for it. This makes each counter 1 byte instead of 8 bytes.
2. Binary profile correlation: 
https://discourse.llvm.org/t/rfc-add-binary-profile-correlation-to-not-load-profile-metadata-sections-into-memory-at-runtime/74565.
 With this mode, it still generates the same `__llvm_prf_names` and 
`__llvm_prf_data` sections, but they can be stripped away before binary starts 
running. At merging stage, you need to provide the unstripped version of the 
binary to restore the information in those stripped sections. Basically, this 
reduces the stripped instrumented-binary size and raw profiles size.

https://github.com/llvm/llvm-project/pull/92582
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to