/* Test for VLA size evaluation; see PR 35198. */ /* Origin: Joseph Myers */ /* { dg-do run } */ /* { dg-options "-std=c99" } */ extern void exit (int); extern void abort (void); int i; void *p; void f1 (void *x, int j) { p = (int (*)[++i])x; if (i != j) abort (); } void f1c (void *x, int j) { p = (int (*)[++i]){x}; if (i != j) abort (); } void f2 (void *x, int j) { x = (void *)(int (*)[++i])p; if (i != j) abort (); } void f2c (void *x, int j) { x = (void *)(int (*)[++i]){p}; if (i != j) abort (); } void f3 (void *x, int j) { (void)(int (*)[++i])p; if (i != j) abort (); } void f3c (void *x, int j) { (void)(int (*)[++i]){p}; if (i != j) abort (); } void f4 (void *x, int j) { (int (*)[++i])p; (int (*)[++i])p; if (i != j) abort (); } void f4c (void *x, int j) { (int (*)[++i]){p}; (int (*)[++i]){p}; if (i != j) abort (); } void f5c (void *x, int j, int k) { (++i, f3c (x, j), (int (*)[++i]){p}); if (i != k) abort (); } int main (void) { f1 (p, 1); f2 (p, 2); f3 (p, 3); f4 (p, 5); f1c (p, 6); f2c (p, 7); f3c (p, 8); f4c (p, 10); f5c (p, 12, 13); exit (0); }