[Bug middle-end/86957] New: gcc should warn about missing profiles for a compilation unit or a new function with -fprofile-use
ibhagatgnu at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Aug 14 19:10:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86957
Bug ID: 86957
Summary: gcc should warn about missing profiles for a
compilation unit or a new function with -fprofile-use
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: ibhagatgnu at gmail dot com
CC: mliska at suse dot cz
Target Milestone: ---
When using -fprofile-use in the FDO build, gcc currently does not warn about
about the following two cases.
Both the cases are related to a missing profiles.
Discussed here on mailing list https://gcc.gnu.org/ml/gcc/2018-08/msg00048.html
CASE 1 : Missing profile for a new function
-------------------------------------------
If a new function foo() is added to the file, gcc only warns about those
existing functions whose source locations have been impacted by foo() by
issuing the following :
"warning : source locations for function 'XXX' have changed, the profile data
may be out of date [-Werror=coverage-mismatch]"
Proposal to add a warning for the new function foo() along the lines of -
"warning : profile for function ‘XXX’ not found in profile data
[-Wmissing-profile]"
Note that, the corner case of foo() being added to the end of the file is
exclusively covered by the proposed -Wmissing-profile
CASE 2 : Missing profile for a compilation unit
-----------------------------------------------
This is the case when, e.g., a new source file is added to the project after
profile generation phase. Also, the case when somehow .gcda files are wiped out
in a make clean etc.
It is worth informing the user that profile generation is due. Proposal to add
a warning per file along the lines of -
"warning : profile count data file not found, regenerating profiles may help
[-Wmissing-profile]"
To contrast, -Wcoverage-mismatch covers the cases when profiles are STALE.
-Wmissing-profile is intended to cover the cases when there is NO profile.
I propose to keep the behaviour of -Wmissing-profile to be consistent with
-Wcoverage-mismatch in that :
1. Both should be on by default and treated as errors by default in
-fprofile-use FDO build
2. A user must use -Wno-error to just see them as warnings (with
-fprofile-use).
More information about the Gcc-bugs
mailing list