On 10/26/2015 01:27 PM, Richard Biener wrote:
On Mon, Oct 26, 2015 at 1:01 PM, Jakub Jelinek <ja...@redhat.com> wrote:
On Mon, Oct 26, 2015 at 12:57:53PM +0100, Bernd Schmidt wrote:
On 10/26/2015 12:47 PM, Jakub Jelinek wrote:

Because the amount of code that uses this (including GCC itself) is just too
huge, so everywhere in the middle-end we also special case last array members of
structs.  While C99+ has flexible array members, e.g. C++ does not, so users
are left with using struct { ... type fld[1]; };

Yes, and that case is documented. However, the issue is arrays declared with
a larger size than 1 or 0 - is there really code using them as flexible
array members?

I believe so, though don't have pointers to that right now.  But vaguely
remember we saw various cases of using 2 or other values too.

Yes, char[4] is quite common (basically making sure there is no appearant
padding behind the array due to alignment - just in case compilers might
be clever because of that).

Ugh, how ugly. Can we at least agree not to allow multi-dimensional arrays with a size larger than one to be considered flexible?


Bernd

Reply via email to