https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68489
--- Comment #6 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- I'm not sure about arrays of structs, but glibc uses [0] at end of struct in some cases where proper flexible array members would not be accepted. E.g. struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; __extension__ struct __gconv_step_data __data[0]; } which is then used as a non-last member of another structure.