Hi. The patch is about a new option that can be handy when you pipe output and you do not use an object file.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests. Ready to be installed? Thanks, Martin gcc/ChangeLog: 2019-07-02 Martin Liska <mli...@suse.cz> * common.opt: Add fprofile-note. * coverage.c (coverage_init): Append the option to bbg_file_name. * doc/invoke.texi: Document -fprofile-note. --- gcc/common.opt | 4 ++++ gcc/coverage.c | 11 ++++++++--- gcc/doc/invoke.texi | 9 +++++++-- 3 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/gcc/common.opt b/gcc/common.opt index a1544d06824..c1b90562b9b 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -2096,6 +2096,10 @@ Common Joined RejectNegative Var(profile_data_prefix) Set the top-level directory for storing the profile data. The default is 'pwd'. +fprofile-note= +Common Joined RejectNegative Var(profile_note_location) +Select the name for storing the profile note file. + fprofile-correction Common Report Var(flag_profile_correction) Enable correction of flow inconsistent profile data input. diff --git a/gcc/coverage.c b/gcc/coverage.c index 1ffefd5f482..960ff7ee86a 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -1255,9 +1255,14 @@ coverage_init (const char *filename) /* Name of bbg file. */ if (flag_test_coverage && !flag_compare_debug) { - bbg_file_name = XNEWVEC (char, len + strlen (GCOV_NOTE_SUFFIX) + 1); - memcpy (bbg_file_name, filename, len); - strcpy (bbg_file_name + len, GCOV_NOTE_SUFFIX); + if (profile_note_location) + bbg_file_name = xstrdup (profile_note_location); + else + { + bbg_file_name = XNEWVEC (char, len + strlen (GCOV_NOTE_SUFFIX) + 1); + memcpy (bbg_file_name, filename, len); + strcpy (bbg_file_name + len, GCOV_NOTE_SUFFIX); + } if (!gcov_open (bbg_file_name, -1)) { diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 9c6050b574b..918987b6656 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -493,8 +493,8 @@ Objective-C and Objective-C++ Dialects}. @gccoptlist{-p -pg -fprofile-arcs --coverage -ftest-coverage @gol -fprofile-abs-path @gol -fprofile-dir=@var{path} -fprofile-generate -fprofile-generate=@var{path} @gol --fprofile-update=@var{method} -fprofile-filter-files=@var{regex} @gol --fprofile-exclude-files=@var{regex} @gol +-fprofile-note=@var{path} -fprofile-update=@var{method} @gol +-fprofile-filter-files=@var{regex} -fprofile-exclude-files=@var{regex} @gol -fsanitize=@var{style} -fsanitize-recover -fsanitize-recover=@var{style} @gol -fasan-shadow-offset=@var{number} -fsanitize-sections=@var{s1},@var{s2},... @gol -fsanitize-undefined-trap-on-error -fbounds-check @gol @@ -12403,6 +12403,11 @@ the profile feedback data files. See @option{-fprofile-dir}. To optimize the program based on the collected profile information, use @option{-fprofile-use}. @xref{Optimize Options}, for more information. +@item -fprofile-note=@var{path} +@opindex fprofile-note + +If @var{path} is specified, GCC saves gcno filename into @var{path} location. + @item -fprofile-update=@var{method} @opindex fprofile-update