public inbox for [email protected]  
help / color / mirror / Atom feed
From: Andres Freund <[email protected]>
To: Tom Lane <[email protected]>
Cc: [email protected]
Subject: Re: More weird compiler warnings
Date: Sat, 26 Mar 2022 13:55:49 -0700
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>

Hi,

On 2022-03-26 16:23:26 -0400, Tom Lane wrote:
> serinus' experimental gcc whines about a few places in network.c:
>
> ../../../../../pgsql/src/backend/utils/adt/network.c: In function 'inetnot':
> ../../../../../pgsql/src/backend/utils/adt/network.c:1893:34: warning: writing 1 byte into a region of size 0 [-Wstringop-overflow=]
>  1893 |                         pdst[nb] = ~pip[nb];
>       |                         ~~~~~~~~~^~~~~~~~~~
> ../../../../../pgsql/src/include/utils/inet.h:27:23: note: at offset -1 into destination object 'ipaddr' of size 16
>    27 |         unsigned char ipaddr[16];       /* up to 128 bits of address */
>       |                       ^~~~~~
> ../../../../../pgsql/src/include/utils/inet.h:27:23: note: at offset -1 into destination object 'ipaddr' of size 16
>
> The code in question looks like
>
>     {
>         int            nb = ip_addrsize(ip);
>         unsigned char *pip = ip_addr(ip);
>         unsigned char *pdst = ip_addr(dst);
>
>         while (nb-- > 0)
>             pdst[nb] = ~pip[nb];
>     }
>
> There's nothing actually wrong with this

I reported this to the gcc folks, that's clearly a bug. I suspect that it
might not just cause spurious warnings, but also code generation issues - but
I don't know that part for sure.

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104986


> but I'm wondering if we could silence the warning by changing the loop condition to
>
>         while (--nb >= 0)
>
> which seems like it might be marginally more readable anyway.

Yes, that looks like it silences it.  I modified the small reproducer I had in
that bug (https://godbolt.org/z/ejK9h6von) and the warning vanishes.

Greetings,

Andres Freund





view thread (4+ messages)  latest in thread

reply

Reply instructions:

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

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: More weird compiler warnings
  In-Reply-To: <[email protected]>

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

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox