git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Cc: Taylor Blau <me@ttaylorr.com>,
	git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
	Han-Wen Nienhuys <hanwen@google.com>
Subject: Re: [PATCH 2/3] reftable: remove unreachable "return" statements
Date: Thu, 13 Jan 2022 16:39:31 +0100 (CET)	[thread overview]
Message-ID: <nycvar.QRO.7.76.6.2201131638500.2121@tvgsbejvaqbjf.bet> (raw)
In-Reply-To: <220113.86y23jvrrw.gmgdl@evledraar.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3165 bytes --]

Hi Ævar,

On Thu, 13 Jan 2022, Ævar Arnfjörð Bjarmason wrote:

> On Wed, Jan 12 2022, Taylor Blau wrote:
>
> > On Wed, Jan 12, 2022 at 01:47:40PM +0100, Ævar Arnfjörð Bjarmason wrote:
> >> >> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
> >> >> ---
> >> >>  reftable/refname.c | 1 -
> >> >>  reftable/writer.c  | 1 -
> >> >>  2 files changed, 2 deletions(-)
> >> >>
> >> >> diff --git a/reftable/refname.c b/reftable/refname.c
> >> >> index 95734969324..136001bc2c7 100644
> >> >> --- a/reftable/refname.c
> >> >> +++ b/reftable/refname.c
> >> >> @@ -132,7 +132,6 @@ static int validate_refname(const char *name)
> >> >>  			return REFTABLE_REFNAME_ERROR;
> >> >>  		name = next + 1;
> >> >>  	}
> >> >> -	return 0;
> >> >>  }
> >> >
> >> > In this case the loop inside of validate_refname() should always
> >> > terminate the function within the loop body. But removing this return
> >> > statement here relies on the compiler to determine that fact.
> >> >
> >> > I could well imagine on the other end of the spectrum there exists a
> >> > compiler which _doesn't_ make this inference pass, and would complain
> >> > about the opposite thing as you're reporting from SunCC (i.e., that this
> >> > function which returns something other than void does not have a return
> >> > statement outside of the loop).
> >> >
> >> > So in that sense, I disagree with the guidance of SunCC's warning. In
> >> > other words: by quelching this warning under one compiler, are we
> >> > introducing a new warning under a different/less advanced compiler?
> >>
> >> I'd think that any compiler who'd warn about this sort of thing at all
> >> would be able to spot constructs like this one, which are basically:
> >>
> >>     while (1) {
> >>     	...
> >>         if (x)
> >>         	return;
> >> 	...
> >>     }
> >>     return; /* unreachable */
> >>
> >> Where the elided code contains no "break", "goto" or other mechanism for
> >> exiting the for-loop.
> >>
> >> I.e. GCC and Clang don't bother to note the unreachable code, but I
> >> don't think the reverse will be true, that a compiler will say that a
> >> "return" is missing there. Having a function be just a loop body that
> >> returns an some point is a common pattern.
> >
> > Right, but I'm more concerned about a less advanced compiler that would
> > complain about the absence of a `return` statement as the last
> > instruction in a non-void function.
> >
> > This is probably all academic, anyway, since less advanced compilers
> > probably have other issues compiling Git as it stands today, but
> > fundamentally I think that SunCC's warnings here are at the very least
> > inconsiderate of less advanced compilers.
> >
> > To me, the safest thing to do would be to leave the code as-is and drop
> > this patch.
>
> I really don't see that, sorry. We have an actual example of a compliler
> that does emit a warning new in this rc on this code, but AFAICT your
> concern is purely hypothetical.

It's just a warning.

So I concur with Taylor. This patch does not need to go into v2.35.0.

Ciao,
Johannes

  reply	other threads:[~2022-01-13 15:39 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-11 16:40 [PATCH 0/3] Fix SunCC compiler complaints new in v2.35.0-rc0 Ævar Arnfjörð Bjarmason
2022-01-11 16:40 ` [PATCH 1/3] test-tool genzeros: initialize "zeros" to avoid SunCC warning Ævar Arnfjörð Bjarmason
2022-01-11 19:06   ` Taylor Blau
2022-01-12 14:21   ` Johannes Schindelin
2022-01-12 19:10     ` Taylor Blau
2022-01-13 10:08       ` Ævar Arnfjörð Bjarmason
2022-01-13 15:31         ` Johannes Schindelin
2022-01-13 17:38         ` Junio C Hamano
2022-01-11 16:40 ` [PATCH 2/3] reftable: remove unreachable "return" statements Ævar Arnfjörð Bjarmason
2022-01-11 19:16   ` Taylor Blau
2022-01-12 12:47     ` Ævar Arnfjörð Bjarmason
2022-01-12 19:19       ` Taylor Blau
2022-01-13 10:29         ` Ævar Arnfjörð Bjarmason
2022-01-13 15:39           ` Johannes Schindelin [this message]
2022-01-13 20:17       ` Johannes Sixt
2022-01-13 21:37         ` Junio C Hamano
2022-01-11 16:40 ` [PATCH 3/3] reftable tests: avoid "int" overflow, use "uint64_t" Ævar Arnfjörð Bjarmason
2022-01-11 19:28   ` Taylor Blau
2022-01-11 19:31     ` Han-Wen Nienhuys
2022-01-11 19:41       ` Taylor Blau
2022-01-11 20:08         ` Johannes Sixt
2022-01-11 20:18           ` Taylor Blau
2022-01-11 20:21             ` Johannes Sixt
2022-01-11 20:24               ` Taylor Blau
2022-01-12 14:18                 ` Johannes Schindelin
2022-01-12 19:02               ` Junio C Hamano
2022-01-12 19:07                 ` Taylor Blau
2022-01-13 10:04                   ` Ævar Arnfjörð Bjarmason
2022-01-13 21:38                     ` Junio C Hamano
2022-01-11 17:06 ` [PATCH 0/3] Fix SunCC compiler complaints new in v2.35.0-rc0 Han-Wen Nienhuys
2022-01-11 18:36   ` René Scharfe
2022-01-12  1:22 ` Emily Shaffer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=nycvar.QRO.7.76.6.2201131638500.2121@tvgsbejvaqbjf.bet \
    --to=johannes.schindelin@gmx.de \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=hanwen@google.com \
    --cc=me@ttaylorr.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).