diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/c-c++-common/pr58346-1.c')
-rw-r--r-- | gcc-4.9/gcc/testsuite/c-c++-common/pr58346-1.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/c-c++-common/pr58346-1.c b/gcc-4.9/gcc/testsuite/c-c++-common/pr58346-1.c new file mode 100644 index 000000000..371fcf484 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/c-c++-common/pr58346-1.c @@ -0,0 +1,24 @@ +/* PR c/58346 */ +/* { dg-do compile } */ + +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]); +} |