Declaring an array of incomplete element type should give an error telling us that this is not allowed:
int ipts2[2][]={{1,2},{3,4}};
static int va2(int nargs,...);
void
g (void)
{
va2(4,ipts2[0],ipts2[1]);
}
Instead the frontend accepts this, resulting in a rather nondescriptive error message later:
test.c:8: error 66: attempt to allocate variable of unknown size 'iTemp0'
Same for other incomplete struct and union types.