Thread: Erroneous -Werror=missing-braces on old GCC

Erroneous -Werror=missing-braces on old GCC

From
Richard Guo
Date:
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
Attachment

Re: Erroneous -Werror=missing-braces on old GCC

From
Japin Li
Date:
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.



Re: Erroneous -Werror=missing-braces on old GCC

From
Tom Lane
Date:
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



Re: Erroneous -Werror=missing-braces on old GCC

From
Tom Lane
Date:
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