Thread: 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
(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
Attachment
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