For function argument VLAs, GCC correctly reports the expected size. Clang seems unaware:
#include <stdio.h>
void __attribute__((noinline))
foo(int n, short array[n])
{
printf("%zu\n", __builtin_dynamic_object_size(array, 1));
}
int main(void)
{
short array[10];
foo(10, array);
return 0;
}
$ gcc -Wall -O2 -o fvla-gcc fvla.c && ./fvla-gcc
20
$ clang -Wall -O2 -o fvla-clang fvla.c && ./fvla-clang
18446744073709551615
@bwendling