/* Test for modifying and taking addresses of compound literals whose variably modified types involve typeof. */ /* Origin: Joseph Myers */ /* { dg-do run } */ /* { dg-options "-std=gnu99" } */ #include extern void exit (int); extern void abort (void); int a[1]; void f1 (void) { int i = 0; int (**p)[1] = &(typeof (++i, (int (*)[i])a)){&a}; if (*p != &a) abort (); if (i != 1) abort (); } void f2 (void) { int i = 0; (typeof (++i, (int (*)[i])a)){&a} = 0; if (i != 1) abort (); } void f3 (void) { int i = 0; (typeof (++i, (int (*)[i])a)){&a} += 1; if (i != 1) abort (); } void f4 (void) { int i = 0; --(typeof (++i, (int (*)[i])a)){&a + 1}; if (i != 1) abort (); } void f5 (void) { int i = 0; (typeof (++i, (int (*)[i])a)){&a}++; if (i != 1) abort (); } int main (void) { f1 (); f2 (); f3 (); f4 (); f5 (); exit (0); }