Re: warning: dereferencing type-punned pointer

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: warning: dereferencing type-punned pointer
Дата
Msg-id 1256314.1721845785@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: warning: dereferencing type-punned pointer  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
BTW, I tried the same experiment of building without
-fno-strict-aliasing using gcc 11.4.1 (from RHEL9).
I see one more warning than Tatsuo-san did:

In file included from verify_heapam.c:18:
verify_heapam.c: In function ‘check_tuple_attribute’:
../../src/include/access/toast_internals.h:37:11: warning: dereferencing type-punned pointer will break strict-aliasing
rules[-Wstrict-aliasing] 
   37 |         (((toast_compress_header *) (ptr))->tcinfo >> VARLENA_EXTSIZE_BITS)
      |          ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
verify_heapam.c:1693:24: note: in expansion of macro ‘TOAST_COMPRESS_METHOD’
 1693 |                 cmid = TOAST_COMPRESS_METHOD(&toast_pointer);
      |                        ^~~~~~~~~~~~~~~~~~~~~

This looks a bit messy to fix: we surely don't want to pierce
the abstraction TOAST_COMPRESS_METHOD provides.  Perhaps
the toast_pointer local variable could be turned into a union
of struct varatt_external and toast_compress_header, but that
would impose a good deal of notational overhead on the rest
of this function.

The good news is that we get through check-world (although
I didn't try very many build options).

            regards, tom lane



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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: warning: dereferencing type-punned pointer
Следующее
От: Tom Lane
Дата:
Сообщение: Re: warning: dereferencing type-punned pointer