On 26/05/25 12:58, Jan Hubicka wrote:
External email: Use caution opening links or attachments


Hi,
Ping?
Sorry for the delay. I think I finally got auto-fdo running on my box
and indeed I see that if function is cloned later, the profile is lost.
There are .suffixes added before afdo pass (such as openmp offloading or
nested functions) and there are .suffixes added afer afdo (by ipa
cloning and LTO privatization).  I see we want to merge those created by
ipa cloning (after afdo pass).  But I do not think we want to merge
those for i.e.  nested functions since those are actual different
functions or for openmp offloading.

I also wonder what happens with LTO privatization - i.e. how we look up
what static function does the symbol belong?

Hi,

LTO privatization is a known issue - I had filed a bugzilla report for it
at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120229. One method to fix
it is to attach file names to the GCOV profile data, and we are working on
a patch to do this.

--
Regards,
Dhruv


Overwritting the data by the last clone is definitely bad, so the patch
is OK, but we should figure out what happens in the cases above.

Also if we merge, it may happen that the clone is noticeably different
from original - for example with ipa split it may be missing part of the
body. Merging the tables elementwise is safe then?

Honza

Thanks,
Kugan



On 9 May 2025, at 11:54 am, Kugan Vivekanandarajah <kvivekana...@nvidia.com> 
wrote:

External email: Use caution opening links or attachments


This patch add support for merging profiles from multiple clones.
That is, when optimized binaries have clones such as IPA-CP clone or SRA
clones, genarted gcov will have profiled them spereately.
Currently we pick one and ignore the rest. This patch fixes this by
merging the profiles.


Regression tested on aarch64-linux-gnu with no new regression.
Also successfully  done autoprofiledbootstrap with the relevant patch.

Is this OK for trunk?
Thanks,
Kugan





Reply via email to