blob: d864a47ffc8c867d531137af1aa177c5fa709245 [file] [log] [blame]
/* Exercise that -Warray-bounds is handled correctly for subobjects.
Test case derived from the halt_fast_timekeeper function in Linux
kernel/time/timekeeping.c.
{ dg-do compile }
{ dg-options "-O2 -Warray-bounds=2 -Wno-stringop-overflow -ftrack-macro-expansion=0" } */
struct A
{
int i;
void *p;
int j;
};
struct B
{
struct A a;
int i;
};
void sink (void*);
static void halt_fast_timekeeper (struct B *b)
{
static struct A a;
struct A *pa = &b->a;
__builtin_memcpy (&a, pa, sizeof *pa); /* { dg-bogus "\\\[-Warray-bounds" } */
sink (&a);
}
struct C { int i; struct B b; } c;
void timekeeping_suspend (void)
{
struct B *p = &c.b;
halt_fast_timekeeper (p);
}