> It has to know to make sure malloc gets the array element size argument multiplied in runtime by
nUm, C compilers already do that with arrays with compile-time lengths.
#include <stdio.h>
void main(void) {
char x[20][30];
printf("%zu\n%zu\n", sizeof(x), sizeof(x[0]));
}
prints
600
30
so you can have "char *y = malloc(sizeof(x)); memcpy(y, x, sizeof(x));" and it must work since C89 at least. The main problem with VLAs is that they make exact the stack frame size unknown until runtime which complicates function prologues/epilogues but that's the problem in the codegen part of the backend, the semantics machinery is mostly in the place already.
P.S. And yes, uecker is a member of the ISO C WG14 and GCC contributor, according to his profile.