driver, toplevel: Avoid emitting the version information twice.

Message ID 20230129113451.24516-1-iain@sandoe.co.uk
State New
Headers
Series driver, toplevel: Avoid emitting the version information twice. |

Commit Message

Iain Sandoe Jan. 29, 2023, 11:34 a.m. UTC
  Technically, this is seems to be a regression somewhere between 4.2 and
4.6 but, it seems, not enough for anyone to care too much.  Tested on
various Darwin versions and x86_64, powerpc64 linux,
OK for trunk {now,stage1}?
thanks, Iain

--- 8< ---

For a regular compile job, with -v we emit the GCC version information
twice - once from main() and once from process_options().  We do not need
to emit the former unless the compiler will exit before calling
process_options(), which is controlled by the 'exit_after_options' flag.

Gating the first output on that flag resolves this.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/ChangeLog:

	* toplev.cc (toplev::main): Only print the version information from
	the toplevel main() if we will exit before processing options.
---
 gcc/toplev.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Richard Biener Jan. 30, 2023, 7:48 a.m. UTC | #1
On Sun, Jan 29, 2023 at 12:35 PM Iain Sandoe via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> Technically, this is seems to be a regression somewhere between 4.2 and
> 4.6 but, it seems, not enough for anyone to care too much.  Tested on
> various Darwin versions and x86_64, powerpc64 linux,
> OK for trunk {now,stage1}?

This will elide the earlier printing, right?  I see

> ./cc1 -quiet t.c -version -v
GNU C17 (GCC) version 13.0.1 20230130 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR
version 4.0.2-p6, MPC version 1.1.0, isl version isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
ignoring nonexistent directory
"/usr/local/lib64/gcc/x86_64-pc-linux-gnu/13.0.1/include"
ignoring nonexistent directory
"/usr/local/lib64/gcc/x86_64-pc-linux-gnu/13.0.1/include-fixed"
ignoring nonexistent directory "/usr/local/lib64/../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/include
End of search list.
GNU C17 (GCC) version 13.0.1 20230130 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR
version 4.0.2-p6, MPC version 1.1.0, isl version isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 04b9febc760f5d967341e708a5944221

eliding the 2nd would be prefered so the info comes first?

> thanks, Iain
>
> --- 8< ---
>
> For a regular compile job, with -v we emit the GCC version information
> twice - once from main() and once from process_options().  We do not need
> to emit the former unless the compiler will exit before calling
> process_options(), which is controlled by the 'exit_after_options' flag.
>
> Gating the first output on that flag resolves this.
>
> Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
>
> gcc/ChangeLog:
>
>         * toplev.cc (toplev::main): Only print the version information from
>         the toplevel main() if we will exit before processing options.
> ---
>  gcc/toplev.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/toplev.cc b/gcc/toplev.cc
> index 42937f0ba00..8beaa2ab64d 100644
> --- a/gcc/toplev.cc
> +++ b/gcc/toplev.cc
> @@ -2252,7 +2252,7 @@ toplev::main (int argc, char **argv)
>
>    initialize_plugins ();
>
> -  if (version_flag)
> +  if (version_flag && exit_after_options)
>      print_version (stderr, "", true);
>
>    if (help_flag)
> --
> 2.37.1 (Apple Git-137.1)
>
  
Iain Sandoe Feb. 2, 2023, 11:41 a.m. UTC | #2
> On 30 Jan 2023, at 07:48, Richard Biener <richard.guenther@gmail.com> wrote:
> 
> On Sun, Jan 29, 2023 at 12:35 PM Iain Sandoe via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>> 
>> Technically, this is seems to be a regression somewhere between 4.2 and
>> 4.6 but, it seems, not enough for anyone to care too much.  Tested on
>> various Darwin versions and x86_64, powerpc64 linux,
>> OK for trunk {now,stage1}?
> 
> This will elide the earlier printing, right? 

Yes.

> eliding the 2nd would be prefered so the info comes first?

Indeed; that is better .. 

how about this update then?
OK for trunk now/stage1?

— 8< ---

For a regular compile job, with -v we emit the GCC version information
twice - once from main() and once from process_options().

We do not need to output the second header.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

gcc/ChangeLog:

	* toplev.cc (toplev::main): Only print the version information header
	from toplevel main().
---
 gcc/toplev.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 42937f0ba00..4c15d4f542e 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -1358,7 +1358,7 @@ process_options (bool no_backend)
      option flags in use.  */
   if (version_flag)
     {
-      print_version (stderr, "", true);
+      /* We already printed the version header in main ().  */
       if (!quiet_flag)
 	{
 	  fputs ("options passed: ", stderr);
  
Richard Biener Feb. 2, 2023, 1:31 p.m. UTC | #3
On Thu, Feb 2, 2023 at 12:41 PM Iain Sandoe <iain@sandoe.co.uk> wrote:
>
>
>
> > On 30 Jan 2023, at 07:48, Richard Biener <richard.guenther@gmail.com> wrote:
> >
> > On Sun, Jan 29, 2023 at 12:35 PM Iain Sandoe via Gcc-patches
> > <gcc-patches@gcc.gnu.org> wrote:
> >>
> >> Technically, this is seems to be a regression somewhere between 4.2 and
> >> 4.6 but, it seems, not enough for anyone to care too much.  Tested on
> >> various Darwin versions and x86_64, powerpc64 linux,
> >> OK for trunk {now,stage1}?
> >
> > This will elide the earlier printing, right?
>
> Yes.
>
> > eliding the 2nd would be prefered so the info comes first?
>
> Indeed; that is better ..
>
> how about this update then?
> OK for trunk now/stage1?

OK now.

Richard.

> — 8< ---
>
> For a regular compile job, with -v we emit the GCC version information
> twice - once from main() and once from process_options().
>
> We do not need to output the second header.
>
> Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
>
> gcc/ChangeLog:
>
>         * toplev.cc (toplev::main): Only print the version information header
>         from toplevel main().
> ---
>  gcc/toplev.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/gcc/toplev.cc b/gcc/toplev.cc
> index 42937f0ba00..4c15d4f542e 100644
> --- a/gcc/toplev.cc
> +++ b/gcc/toplev.cc
> @@ -1358,7 +1358,7 @@ process_options (bool no_backend)
>       option flags in use.  */
>    if (version_flag)
>      {
> -      print_version (stderr, "", true);
> +      /* We already printed the version header in main ().  */
>        if (!quiet_flag)
>         {
>           fputs ("options passed: ", stderr);
> --
> 2.37.1 (Apple Git-137.1)
>
>
  

Patch

diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 42937f0ba00..8beaa2ab64d 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -2252,7 +2252,7 @@  toplev::main (int argc, char **argv)
 
   initialize_plugins ();
 
-  if (version_flag)
+  if (version_flag && exit_after_options)
     print_version (stderr, "", true);
 
   if (help_flag)