blob: 84d5adef15446dccebb0149542e004e349e42ef5 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2 -fstack-clash-protection -Wno-psabi -fno-optimize-sibling-calls --param stack-clash-protection-probe-interval=12 --param stack-clash-protection-guard-size=12" } */
/* { dg-require-effective-target supports_stack_clash_protection } */
typedef float V __attribute__((vector_size (32)));
__attribute__((noinline, noclone)) void
foo (char *p)
{
asm volatile ("" : : "r" (p) : "memory");
}
__attribute__((noinline, noclone)) int
f0 (int x, int y)
{
asm volatile ("" : : : "memory");
return x + y;
}
__attribute__((noinline, noclone)) void
f1 (void)
{
char buf[64];
foo (buf);
}
__attribute__((noinline, noclone)) void
f2 (void)
{
char buf[12000];
foo (buf);
}
__attribute__((noinline, noclone)) void
f3 (void)
{
char buf[131072];
foo (buf);
}
__attribute__((noinline, noclone)) void
f4 (int x)
{
char vla[x];
foo (vla);
}
__attribute__((noinline, noclone)) void
f5 (int x)
{
char buf[12000];
foo (buf);
{
char vla[x];
foo (vla);
}
{
char vla[x];
foo (vla);
}
}
V v;
__attribute__((noinline, noclone)) int
f6 (int x, int y, V a, V b, V c)
{
asm volatile ("" : : : "memory");
v = a + b + c;
return x + y;
}
__attribute__((noinline, noclone)) void
f7 (V a, V b, V c)
{
char buf[64];
foo (buf);
v = a + b + c;
}
__attribute__((noinline, noclone)) void
f8 (V a, V b, V c)
{
char buf[12000];
foo (buf);
v = a + b + c;
}
__attribute__((noinline, noclone)) void
f9 (V a, V b, V c)
{
char buf[131072];
foo (buf);
v = a + b + c;
}
__attribute__((noinline, noclone)) void
f10 (int x, V a, V b, V c)
{
char vla[x];
foo (vla);
v = a + b + c;
}
__attribute__((noinline, noclone)) void
f11 (int x, V a, V b, V c)
{
char buf[12000];
foo (buf);
v = a + b + c;
{
char vla[x];
foo (vla);
}
{
char vla[x];
foo (vla);
}
}
int
main ()
{
f0 (2, 3);
f1 ();
f2 ();
f3 ();
f4 (12000);
f5 (12000);
f6 (2, 3, v, v, v);
f7 (v, v, v);
f8 (v, v, v);
f9 (v, v, v);
f10 (12000, v, v, v);
f11 (12000, v, v, v);
return 0;
}