On 09/22/14 08:04, Teresa Johnson wrote:

The approach we now take for LIPO builds is to propagate the counts

LIPO?

for the profiled copy of the COMDAT to other modules. (Additionally
the indirect call profiling we perform in LIPO mode would point to a
module that we didn't have access to, which is a related issue that
the COMDAT fixups we perform at the end of the LIPO profiling run are
trying to solve.)

I'm presuming then that all modules of relevance are compiled with coverage information? Propagating counters from one module to another still seems wrong. It'll make it look like the function's executed more times than it really is (per copy). Plus in the general case one can't rely on the copies being identical implementations -- COMDAT only requires they be functionally equivalent.


Correct in that it makes it look like these copies were executed. This
was causing some issues when we rewrote/merged profiles with
gcov-tool, which essentially operates in whole-program mode. To handle
this, this patch marks the modified (previously all-zero) copies in
the gcda file. So now gcov-tool can handle them appropriately (clear
them on read before doing any analysis), and gcov-dump will flag them.

Um, I don't understand why you're doing this then? If gcov is ignoring the copies, what is the purpose?

nathan

Reply via email to