pgsql: Work around spurious compiler warning in inet operators

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: Work around spurious compiler warning in inet operators
Дата
Msg-id E1pcvX8-003sfY-LP@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Work around spurious compiler warning in inet operators

gcc 12+ has complaints like the following:

../../../../../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

This is due to a compiler bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104986

It has been a year since the bug has been reported without getting fixed. As
the warnings are verbose and use of gcc 12 is becoming more common, it seems
worth working around the bug. Particularly because a simple reformulation of
the loop condition fixes the issue and isn't any less readable.

Author: Tom Lane <tgl@sss.pgh.pa.us>
Author: Andres Freund <andres@anarazel.de>
Discussion: https://postgr.es/m/144536.1648326206@sss.pgh.pa.us
Backpatch: 11-

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/a7a92738ffce35b480d20965ad95317729ae96a2

Modified Files
--------------
src/backend/utils/adt/network.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Thomas Munro
Дата:
Сообщение: pgsql: Small tidyup for commit d41a178b.
Следующее
От: Tom Lane
Дата:
Сообщение: pgsql: Enable use of Memoize atop an Append that came from UNION ALL.