Thread (8 messages) flat view 8 messages, 3 authors, 2016-06-28

Re: [iproute PATCH v3 0/6] Big C99 style initializer rework

From: Phil Sutter <phil@nwl.cc>
Date: 2016-06-28 17:57:03

On Tue, Jun 28, 2016 at 11:37:43AM -0600, David Ahern wrote:
On 6/28/16 11:37 AM, Phil Sutter wrote:
quoted
quoted
quoted
I saw these too with gcc-3.4.6 but not with 5.3.0. It appears to be a
gcc bug[1]. One possible workaround is to match the brace level of the
first field, but it's quite ugly: [2]. Another way might be to
initialize one of the fields to zero, like so:

| struct ifreq ifr = { .ifr_qlen = 0 };

What do you think?

Thanks, Phil

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119
[2] http://nwl.cc/cgi-bin/git/gitweb.cgi?p=iproute2.git;a=commitdiff;h=a1cbf2b63c995b2f633c5b4699248ab308b201d2;hp=3809cfec65b03716d1d0360338126df4b4f3fbf6
I am using gcc on Debian stable which is 5.3.1.
Hmm. In a fresh install of Debian 8.5 I see the warnings as well, but it
has gcc-4.9.2-10 as most recent version.

Another thing I noticed: Using empty braces ('{}') instead of the
universal zero initializer seems to work without causing warnings (at
least unless '-pedantic' is used).
since .ifr_qlen is already referenced in that function seems like your 
suggestion above (struct ifreq ifr = { .ifr_qlen = 0 };) should be 
acceptable.
You mean regarding compatibility of using that define? Or are you
concerned with gcc creating suboptimal code?

I'd rather use a more generic approach than the above. Retrospectively,
I'd rather have that brace orgy instead of the above since it's
intention is more clear and it can be dropped once either gcc guys
manage to backport their fix or the last distribution has updated it's
compiler.

Cheers, Phil
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help