This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Proposal to extend -Wcoverage-mismatch diagnostic cases
- From: Martin Liška <mliska at suse dot cz>
- To: Indu Bhagat <indu dot bhagat at oracle dot com>, gcc at gcc dot gnu dot org
- Date: Mon, 13 Aug 2018 15:32:13 +0200
- Subject: Re: Proposal to extend -Wcoverage-mismatch diagnostic cases
- References: <0ed0e6e1-cef2-52a6-b732-10b990aab5d9@oracle.com>
On 08/09/2018 08:05 PM, Indu Bhagat wrote:
> Wcoverage-mismatch is meant to "Warn in case profiles in -fprofile-use do not
> match"
>
> Currently, gcc compiler warns about the following two cases of source code
> changes which alert the programmer to re-generate the profiles :
>
> 1. Control flow mismatch
> If functions' control flow has been altered after profile generation, the
> profile count data will not be able to match the cfg_checksum.
> Hence the warning, "warning: the control flow of function 'XXX' does not
> match its profile data (counter 'YYY') [-Werror=coverage-mismatch]"
>
> 2. Function is physically moved to a different location
> If existing functions are physically swapped in the source file, gcc alerts
> the user about potentially stale profiles for all the affected functions.
>
> Hence the warning, "warning : source locations for function 'XXX' have
> changed, the profile data may be out of date [-Werror=coverage-mismatch]"
>
> So, if new function foo() is added in the source file before existing
> functions, gcc alerts the user about potentially stale profiles of the
> already seen functions.
> Note however, there is no warning about the new function foo(). Hence, my
> proposal #3 below which will cover foo() in this scenario.
Hello.
I would appreciate a warning for that. Will you work on a patch or should I do
it myself?
>
> Proposing to add the following cases which are not currently covered :
>
> 3. If a new function foo() is added to the file. Proposal to add a warning along
> the lines of -
> "warning : profile for function ‘XXX’ not found in profile data [-Wcoverage-mismatch]"
> The corner case of foo() being added to the end of the file is exclusively
> covered by #3.
>
> 4. A new source file is added to the project after profile generation phase.
> Proposal to add a warning per function along the lines of -
> "warning : profile count data file not found, regenerating profiles may help [-Wcoverage-mismatch]"
I was considering some time ago a warning when a profile is missing for a compilation unit. It's not
only situation when a file is added. But one can also wipe somehow .gcda files in make clean and
it worth informing a user. I tend to come up with a new warning maybe for it. Again are you planning
to work on that?
May I please ask you for a bugzilla entry both these issues?
Thanks,
Martin
>
> For both #3 and #4, gcc currently does not warn. Although, one can infer that
> the count profile data for a specific function / file are missing from the dump
> files, adding warnings #3 and #4 makes the coverage-mismatch set of warnings
> more complete for a better end user experience.
>