| /* PR c/58346 */ | |
| /* { dg-do compile } */ | |
| /* { dg-options "-Wno-c++-compat" { target c } } */ | |
| struct U { | |
| #ifdef __cplusplus | |
| char a[0]; | |
| #endif | |
| }; | |
| static struct U b[6]; | |
| static struct U *u1, *u2; | |
| int | |
| foo (struct U *p, struct U *q) | |
| { | |
| return q - p; /* { dg-error "arithmetic on pointer to an empty aggregate" } */ | |
| } | |
| void | |
| bar (void) | |
| { | |
| __PTRDIFF_TYPE__ d = u1 - u2; /* { dg-error "arithmetic on pointer to an empty aggregate" } */ | |
| __asm volatile ("" : "+g" (d)); | |
| foo (&b[0], &b[4]); | |
| } |