Erroneous -Werror=missing-braces on old GCC
I came across the 'missing braces' warning again when building master
(0a93f803f4) on old GCC (4.8.5).
blkreftable.c: In function ‘BlockRefTableSetLimitBlock’:
blkreftable.c:268:2: warning: missing braces around initializer
[-Wmissing-braces]
BlockRefTableKey key = {0}; /* make sure any padding is zero */
^
This has popped up a few times in the past, and it seems to be GCC bug
53119. We previously used the {{...}} approach to suppress it. Should
we do the same here, like attached?
FWIW, in the same file we initialize BlockRefTableSerializedEntry
variables also with {{0}}.
Thanks
Richard
Attachments:
v1-0001-Fix-erroneous-Werror-missing-braces-on-old-GCC.patchapplication/octet-stream; name=v1-0001-Fix-erroneous-Werror-missing-braces-on-old-GCC.patchDownload+4-5
On Mon, 25 Dec 2023 at 10:42, Richard Guo <guofenglinux@gmail.com> wrote:
I came across the 'missing braces' warning again when building master
(0a93f803f4) on old GCC (4.8.5).blkreftable.c: In function ‘BlockRefTableSetLimitBlock’:
blkreftable.c:268:2: warning: missing braces around initializer
[-Wmissing-braces]
BlockRefTableKey key = {0}; /* make sure any padding is zero */
^
I doubt if `key = {0}` equals `key = {{0}}`, since the second only
initialize the first field in `key`, it may depend on compiler to
initialize other fields (include padding).
This has popped up a few times in the past, and it seems to be GCC bug
53119. We previously used the {{...}} approach to suppress it. Should
we do the same here, like attached?FWIW, in the same file we initialize BlockRefTableSerializedEntry
variables also with {{0}}.Thanks
Richard
--
Regrads,
Japin Li
ChengDu WenWu Information Technology Co., Ltd.
Richard Guo <guofenglinux@gmail.com> writes:
I came across the 'missing braces' warning again when building master
(0a93f803f4) on old GCC (4.8.5).
On the one hand, it's probably pointless to worry about buggy
warnings from ancient compilers ...
This has popped up a few times in the past, and it seems to be GCC bug
53119. We previously used the {{...}} approach to suppress it. Should
we do the same here, like attached?
FWIW, in the same file we initialize BlockRefTableSerializedEntry
variables also with {{0}}.
... but there is a lot to be said for maintaining stylistic consistency.
Given that we're doing it this way elsewhere, we should do it in these
spots too.
regards, tom lane
I wrote:
Richard Guo <guofenglinux@gmail.com> writes:
I came across the 'missing braces' warning again when building master
(0a93f803f4) on old GCC (4.8.5).
On the one hand, it's probably pointless to worry about buggy
warnings from ancient compilers ...
Actually, after checking the buildfarm, I see that
arowana
ayu
batfish
boa
buri
demoiselle
dhole
dragonet
idiacanthus
lapwing
mantid
petalura
rhinoceros
shelduck
siskin
tanager
topminnow
xenodermus
are all bitching about this (with a couple different spellings
of the warning). So this is absolutely something to fix, and
I'm rather surprised that nobody noticed it during the development
of 174c48050.
regards, tom lane