https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71939
Bug ID: 71939
Summary: sole flexible array member in an anonymous structure
rejected
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
While testing a fix for bug 71912 and comparing the C++ front end results to
those of the C front end I came across the following test case that's accepted
in C++ but rejected in C. By my reading of C11 the test case is valid because
"members of an anonymous structure or union are considered to be members of the
containing structure or union" and so struct S should be treated as if it had
been defined as:
struct S {
int i;
int a[];
};
I note that both Clang and EDG eccp 4.11 also reject the code in C, Clang
accepts in C++ mode with -Wflexible-array-extensions.
$ cat xyz.c && /build/gcc-71912/gcc/xgcc -B /build/gcc-71912/gcc -Wall -Wextra
-Wpedantic xyz.c
struct S {
int i;
struct { int a[]; };
};
xyz.c:3:16: error: flexible array member in otherwise empty struct
struct { int a[]; };
^