Why duplicating the merger functions in dyn-ipa.c? Should those in
libgcov-merge.c be reused?

The refactoring of gcov_exit_write_gcda should probably be done in a
separate patch -- preferably submitted to trunk too.

David

On Mon, May 19, 2014 at 10:08 PM, Teresa Johnson <tejohn...@google.com> wrote:
> Ping.
> Teresa
>
> On Wed, May 14, 2014 at 4:39 PM, Teresa Johnson <tejohn...@google.com> wrote:
>> This patch applies profile fixups to COMDATs on the dyn ipa callgraph
>> at the end of LIPO module grouping (either in the profile gen run or
>> in gcov-tool). This is to address issues with missing profiles in the
>> out-of-line COMDAT copies not selected by the linker, and indirect
>> call profiles that target a module not included in the module group.
>> By default, both fixups are enabled, but can be controlled by a
>> profile-gen parameter, an environment variable, and a gcov-tool
>> option.
>>
>> The fixups assume that functions with the same lineno and cfg checksum
>> are copies of the same COMDAT. This is made more likely by ensuring
>> that in LIPO mode we include the full mangled name in the
>> lineno_checksum.
>>
>> For the counter fixup, we merge all non-zero profiles with matching
>> checksums and copy the merged profile into copies with all-zero
>> profiles.
>>
>> For the indirect counter fixup, if an indirect call profile target is
>> not in the module group, we look for a matching checksum copy in the
>> primary module and if exactly one is found we change the target to
>> that.
>>
>> If any fixups are applied, the gcda files are rewritten after module 
>> grouping.
>>
>> This also required a couple of other changes to the optimizer. During
>> cgraph node resolution, we were arbitrarily selecting a copy that had
>> non-zero profiles. Now there are many more to choose from, so we will
>> prefer the primary module copy if it is non-zero. Also, during cloning
>> for inlining, we only want to update the profile on the callee node if
>> we are inlining into the resolved node caller node. We were already
>> doing this for AutoFDO, and need to do this here now that many node
>> copies have the same profile.
>>
>> Patch attached. Tested with regression tests and internal benchmarks.
>> Ok for google branches?
>>
>> Thanks,
>> Teresa
>>
>>
>>
>> --
>> Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413
>
>
>
> --
> Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413

Reply via email to