https://gcc.gnu.org/bugzilla/show_bug.cgi?id=76732
Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |manu at gcc dot gnu.org
--- Comment #3 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
GCC already warns for this (for C)
test.c:1:32: warning: initialized field overwritten [-Woverride-init]
int x[] = { [0] = 1, +3, [1] = 1 };
^
test.c:1:32: note: (near initialization for ‘x[1]’)
test.c:2:43: warning: initialized field overwritten [-Woverride-init]
struct s { int a, b; } s = { .a = 1, .a = 2};
^
test.c:2:43: note: (near initialization for ‘s.a’)
Although the output of Clang is nicer (and they also warn in C++):
prog.cc:1:32: warning: initializer overrides prior initialization of this
subobject [-Winitializer-overrides]
int x[] = { [0] = 1, +3, [1] = 1 };
^
prog.cc:1:22: note: previous initialization is here
int x[] = { [0] = 1, +3, [1] = 1 };
^~
prog.cc:2:43: warning: initializer overrides prior initialization of this
subobject [-Winitializer-overrides]
struct s { int a, b; } s = { .a = 1, .a = 2};
^
prog.cc:2:35: note: previous initialization is here
struct s { int a, b; } s = { .a = 1, .a = 2};
^
(And why does GCC have an empty line before the notes?)