https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85997
--- Comment #3 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- The requirements on array declarators apply before parameter arrays decay to pointers; see DR#047 (which concerns the case of an incomplete element type - not itself a constraint violation before C99 - but applies equally to the constraint in C90 that the number of elements must be an integral constant expression). As the DR response says: "As an aside, array parameters are adjusted to pointer type (subclause 6.7.1, page 82, lines 23-24). However, there is nothing to suggest that a not-strictly-conforming array type can magically be transformed into a strictly conforming pointer parameter via this rule.".