From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by sourceware.org (Postfix) with ESMTP id 837F03857807 for ; Mon, 14 Sep 2020 22:57:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 837F03857807 Date: Mon, 14 Sep 2020 23:57:03 +0100 From: Sergei Trofimovich To: Richard Biener Cc: GCC Patches , Martin Liska , Sergei Trofimovich Subject: Re: [PATCH] -fprofile-reproducible: fix option value handling Message-ID: <20200914235703.4f247e61@sf> In-Reply-To: References: <20200911215518.2646852-1-slyfox@gentoo.org> X-Mailer: Claws Mail 3.17.6 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 14 Sep 2020 22:57:09 -0000 On Mon, 14 Sep 2020 09:34:08 +0200 Richard Biener wrote: > On Fri, Sep 11, 2020 at 11:56 PM Sergei Trofimovich via Gcc-patches > wrote: > > > > From: Sergei Trofimovich > > > > Before the change option handling did not accept an argument: > > xgcc: error: unknown profile reproducibility method '=serial' > > xgcc: note: valid arguments to '-fprofile-reproducible' are: multithreaded parallel-runs serial; did you mean 'serial'? > > > > The change also includes trailing '=' as part of option prefix. > > Does it still work without an option then? '-fprofile-reproducible' seems to be unacceptable value. Initially when I sent the patch I though there was no way to pass the option to gcc. But now I understand how to do it (case 4): Before: 1 $ gcc-11.0.0 -c -fprofile-reproducible a.c -o a gcc-11.0.0: error: missing argument to '-fprofile-reproducible' 2 $ gcc-11.0.0 -c -fprofile-reproducible= a.c -o a gcc-11.0.0: error: unknown profile reproducibility method '=' gcc-11.0.0: note: valid arguments to '-fprofile-reproducible' are: multithreaded parallel-runs serial 3 $ gcc-11.0.0 -c -fprofile-reproducible=serial a.c -o a gcc-11.0.0: error: unknown profile reproducibility method '=serial' gcc-11.0.0: note: valid arguments to '-fprofile-reproducible' are: multithreaded parallel-runs serial; did you mean 'serial'? 4 $ gcc-11.0.0 -c -fprofile-reproducibleserial a.c -o a # ok Note: case 4 was a way to pass the option. After: 1 $ ./xgcc -B. -c -fprofile-reproducible a.c -o a.o xgcc: error: unrecognized command-line option '-fprofile-reproducible'; did you mean '-fprofile-reproducible='? 2 $ ./xgcc -B. -c -fprofile-reproducible= a.c -o a.o xgcc: error: missing argument to '-fprofile-reproducible=' 3 $ ./xgcc -B. -c -fprofile-reproducible=serial a.c -o a.o # ok 4 $ ./xgcc -B. -c -fprofile-reproducibleserial a.c -o a.o xgcc: error: unrecognized command-line option '-fprofile-reproducibleserial'; did you mean '-fprofile-reproducible=serial'? Note: two problems here: a) case 2 got worse diagnostic b) case 4 broke something that worked before I'll look at "a)" to check if it can be easily fixed. Is "b)" worth handling as well? I'll need a hint or example how to handle an alias like that. > OK if so. > > > gcc/ChangeLog: > > > > * common.opt: Fix handling of '-fprofile-reproducible' option. > > --- > > gcc/common.opt | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/gcc/common.opt b/gcc/common.opt > > index dd68c61ae1d..84bf521128d 100644 > > --- a/gcc/common.opt > > +++ b/gcc/common.opt > > @@ -2228,7 +2228,7 @@ Enum(profile_reproducibility) String(parallel-runs) Value(PROFILE_REPRODUCIBILIT > > EnumValue > > Enum(profile_reproducibility) String(multithreaded) Value(PROFILE_REPRODUCIBILITY_MULTITHREADED) > > > > -fprofile-reproducible > > +fprofile-reproducible= > > Common Joined RejectNegative Var(flag_profile_reproducible) Enum(profile_reproducibility) Init(PROFILE_REPRODUCIBILITY_SERIAL) > > -fprofile-reproducible=[serial|parallel-runs|multithreaded] Control level of reproducibility of profile gathered by -fprofile-generate. > > > > -- > > 2.28.0 > > -- Sergei