/* PR c++/57793 */ struct A { unsigned a : 1; unsigned b : 1; }; struct B /* { dg-error "type .B. is too large" "" { target { c++ && ilp32 } } } */ { unsigned char c[0x40000000]; /* { dg-error "size of array .c. is too large" "" { target { ! int32plus } } } */ unsigned char d[0x40000ff0];/* { dg-error "size of array .d. is too large" "" { target { ! int32plus } } } */ struct A e; }; /* { dg-error "type .struct B. is too large" "" { target { c && ilp32 } } } */ void *foo (struct B *p) { if (p->e.a) return (void *) 0; p->e.b = 1; return p->c; } void bar (struct B *p) { foo (p); }