Variable-length array (VLA) should have a size that fits into
a size_t value. According to the standard: "std::size_t can
store the maximum size of a theoretically possible object of
any type (including array)" (this is applied to C too).
The size expression is evaluated at the definition of the
VLA type even if this is a typedef.
The evaluation of the size expression in itself might cause
problems if it overflows.
I think we could make the arithmetic more clear here:
x = BIGINDEX 65536 (2^16) and char[x][x][x][x] would be the first to overflow.
And char[x][x][x][x-1] should not overflow.
And if we are at it, then size_t's range is target dependent, so I think we must extend the RUN line with -target.