git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 4/4] Suppress "statement not reached" warnings under Sun Studio

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Dec 21, 2011, 19:03 UTC
Message-ID
<CACBZZX4htZRQH+2xvoskwE7KoTz98Ox-3xQf0hyEbbFDYCZYHw@mail.gmail.com>
In-Reply-To
<7vvcp9hjam.fsf@alter.siamese.dyndns.org>
On Wed, Dec 21, 2011 at 19:27, Junio C Hamano <gitster@pobox.com> wrote:
Show 44 quoted lines
> Ævar Arnfjörð Bjarmason  <avarab@gmail.com> writes:
>
>> diff --git a/read-cache.c b/read-cache.c
>> index a51bba1..0a4e895 100644
>> --- a/read-cache.c
>> +++ b/read-cache.c
>> @@ -758,7 +758,13 @@ int verify_path(const char *path)
>>               return 0;
>>
>>       goto inside;
>> +#ifdef __sun
>> +#    pragma error_messages (off, E_STATEMENT_NOT_REACHED)
>> +#endif
>>       for (;;) {
>> +#ifdef __sun
>> +#    pragma error_messages (on, E_STATEMENT_NOT_REACHED)
>> +#endif
>>               if (!c)
>>                       return 1;
>
> Patches 1-3 makes sense, but this one is too ugly to live.
>
> Wouldn't something like this be equivalent and have the same effect
> without sacrificing the readablity?
>
> diff --git a/read-cache.c b/read-cache.c
> index a51bba1..73af797 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -757,12 +757,12 @@ int verify_path(const char *path)
>        if (has_dos_drive_prefix(path))
>                return 0;
>
> -       goto inside;
> +       /* we are at the beginning of a path component */
> +       c = '/';
>        for (;;) {
>                if (!c)
>                        return 1;
>                if (is_dir_sep(c)) {
> -inside:
>                        c = *path++;
>                        if ((c == '.' && !verify_dotfile(path)) ||
>                            is_dir_sep(c) || c == '\0')

That would make that warning go away, but I don't know if that changes the semantics of the code. I was aiming not to change any code, just to squash spurious warnings under Sun Studio.

We could also just wrap the whole function definition in the pragma, which would make the code more readable since we wouldn't have 6 lines of warning suppression in the middle of the function.

Or we could just drop this patch entirely, or rewrite the code. Your pick.

Previous: Junio C HamanoNext: Junio C Hamano
Message 7 of 8 in “Eliminate warnings under Sun Studio”
  1. 0/4 Eliminate warnings under Sun StudioÆvar Arnfjörð Bjarmason, Dec 21, 2011
  2. 1/4 Fix an enum assignment issue spotted by Sun StudioÆvar Arnfjörð Bjarmason, Dec 21, 2011
  3. 2/4 Fix a bitwise negation assignment issue spotted by Sun StudioÆvar Arnfjörð Bjarmason, Dec 21, 2011
  4. 3/4 Appease Sun Studio by renaming "tmpfile"Ævar Arnfjörð Bjarmason, Dec 21, 2011
  5. 4/4 Suppress "statement not reached" warnings under Sun StudioÆvar Arnfjörð Bjarmason, Dec 21, 2011
  6. Junio C HamanoDec 21, 2011
  7. Ævar Arnfjörð BjarmasonDec 21, 2011
  8. Junio C HamanoDec 21, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.