diff mbox series

Add -fprofile-note option.

Message ID e0ef87b4-d221-da92-fb34-187f020c6d55@suse.cz
State New
Headers show
Series Add -fprofile-note option. | expand

Commit Message

Martin Liška July 2, 2019, 12:37 p.m. UTC
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  <mliska@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(-)

Comments

Jeff Law July 2, 2019, 7 p.m. UTC | #1
On 7/2/19 6:37 AM, Martin Liška wrote:
> 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  <mliska@suse.cz>
> 
> 	* common.opt: Add fprofile-note.
> 	* coverage.c (coverage_init): Append the option
> 	to bbg_file_name.
> 	* doc/invoke.texi: Document -fprofile-note.
OK
jeff
Sandra Loosemore July 3, 2019, 11:15 p.m. UTC | #2
On 7/2/19 6:37 AM, Martin Liška wrote:

> @@ -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
>  
> 

"gcno filename" is implementor-speak with no context.  In other places 
the documentation uses "@file{.gcno} file".  Please use that here as 
well, and add a @cindex entry on the main definition/discussion of these 
things and a cross-reference here.

I assume this option only makes sense with some other profiling options. 
  What are they?

Can there be more than one of these files per gcc invocation?  E.g. if 
you specify a command line like

gcc -c foo.c bar.c

??  It looks like the code part of the patch would cause the file to be 
overwritten.  Maybe this should be like -o and diagnose an error?

-Sandra
Martin Liška July 8, 2019, 5:43 p.m. UTC | #3
On 7/4/19 1:15 AM, Sandra Loosemore wrote:
> On 7/2/19 6:37 AM, Martin Liška wrote:
> 
>> @@ -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
>>
>>

Hi.

> 
> "gcno filename" is implementor-speak with no context.  In other places the documentation uses "@file{.gcno} file".  Please use that here as well, and add a @cindex entry on the main definition/discussion of these things and a cross-reference here.

Thank you for the comments. Yes, the suggested wording is much bettern.

> 
> I assume this option only makes sense with some other profiling options.  What are they?

Yes, I listed the option in the section.

> 
> Can there be more than one of these files per gcc invocation?  E.g. if you specify a command line like
> 
> gcc -c foo.c bar.c
> 
> ??  It looks like the code part of the patch would cause the file to be overwritten.  Maybe this should be like -o and diagnose an error?

Yes, it can be combined, I added a caveat into documentation patch.

Martin

> 
> -Sandra
>
Sandra Loosemore July 8, 2019, 7:04 p.m. UTC | #4
On 7/8/19 11:43 AM, Martin Liška wrote:

> @@ -12407,7 +12407,9 @@ To optimize the program based on the collected profile information, use
>  @item -fprofile-note=@var{path}
>  @opindex fprofile-note
>  
> -If @var{path} is specified, GCC saves gcno filename into @var{path} location.
> +If @var{path} is specified, GCC saves @file{.gcno} file into @var{path}
> +location.  If you not combine the option with multiple source files,

s/not // ??
It doesn't make sense as written.

> +the @file{.gcno} file will be overwritten.
>  
>  @item -fprofile-update=@var{method}
>  @opindex fprofile-update

-Sandra
diff mbox series

Patch

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