blob: 2c8e07dd98d605ef3f7f9afbdfb0f3d291d3ceb2 [file] [log] [blame]
/* PR 109334
* { dg-do run }
* { dg-options "-O1" } */
[[gnu::noinline,gnu::noipa]]
int f(int n, int buf[n])
[[gnu::access(read_only, 2, 1)]]
{
return __builtin_dynamic_object_size(buf, 0);
}
[[gnu::noinline,gnu::noipa]]
int g(int n, int buf[])
[[gnu::access(read_only, 2, 1)]]
{
return __builtin_dynamic_object_size(buf, 0);
}
[[gnu::noinline,gnu::noipa]]
int h(int n, int buf[n])
{
return __builtin_dynamic_object_size(buf, 0);
}
int dummy(int x) { return x + 1; }
[[gnu::noinline,gnu::noipa]]
int i(int n, int buf[dummy(n)])
{
return __builtin_dynamic_object_size(buf, 0);
}
int main()
{
int n = 10;
int buf[n];
if (n * sizeof(int) != f(n, buf))
__builtin_abort();
if (n * sizeof(int) != g(n, buf))
__builtin_abort();
if (n * sizeof(int) != h(n, buf))
__builtin_abort();
(void)i(n, buf);
return 0;
}