Re: More weird compiler warnings
От | Andres Freund |
---|---|
Тема | Re: More weird compiler warnings |
Дата | |
Msg-id | 20220326205549.mwwlx7cejdght7bf@alap3.anarazel.de обсуждение исходный текст |
Ответ на | More weird compiler warnings (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: More weird compiler warnings
Re: More weird compiler warnings |
Список | pgsql-hackers |
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
В списке pgsql-hackers по дате отправления: