https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69550
Yichao Yu <yyc1992 at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |yyc1992 at gmail dot com --- Comment #17 from Yichao Yu <yyc1992 at gmail dot com> --- I didn't write that code originally but I think I know why it is written this way when trying to fix the compiler warning/errors. What we want is basically, ``` struct _jl_value_t { struct _jl_value_t *fieldptr[]; }; ``` It needs to be a flexible array rather than an zero-length array since it will cause a runtime error on OSX otherwise. (Ref https://github.com/JuliaLang/julia/pull/13845 I don't have a mac to check but I assume it is done by clang in certain debug mode). However, this doesn't work since the struct mush have another (in priciple non-empty) member and that's why we added a zero length array member in the struct which is non-standard but seems to have worked around the compiler warning on GCC < 6. If this change is made intentionally in C++ mode, I'm fine with keeping it as is given we've already fixed it on our master and it's easy enough (at least for us) to work around this on our stable branch without breaking any existng setup. I'm not sure if other projects will have the same problem though.