This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH AutoFDO]Restoring indirect call value profile transformation
- From: Andi Kleen <ak at linux dot intel dot com>
- To: "bin.cheng" <bin dot cheng at linux dot alibaba dot com>
- Cc: "GCC Patches" <gcc-patches at gcc dot gnu dot org>
- Date: Sat, 15 Dec 2018 17:11:15 -0800
- Subject: Re: [PATCH AutoFDO]Restoring indirect call value profile transformation
- References: <firstname.lastname@example.org>
"bin.cheng" <email@example.com> writes:
> Due to ICE and mal-functional bugs, indirect call value profile transformation
> is disabled on GCC-7/8/trunk. This patch restores the transformation. The
> main issue is AutoFDO should store cgraph_node's profile_id of callee func in
> the first histogram value's counter, rather than pointer to callee's name string
> as it is now.
> With the patch, some "Indirect call -> direct call" tests pass with autofdo, while
> others are unstable. I think the instability is caused by poor perf data collected
> during regrets run, and can confirm these tests pass if good perf data could be
> collected in manual experiments.
Would be good to make the tests stable, otherwise we'll just have
regressions in the future again.
The problem is that the tests don't run long enough and don't get enough samples?
Could add some loop?
Or possibly increase the sampling frequency in perf (-F or -c)?
Or run them multiple times and use gcov_merge to merge the files?
> FYI, an update about AutoFDO status:
> All AutoFDO ICEs in regtest are fixed, while several tests still failing fall in below
> three categories:
Of course it still ICEs with LTO?
Right now there is no test case for this I think. Probably one should be added.