/* Test for new block scopes in C99. Test for each new scope. */ /* Origin: Joseph Myers */ /* { dg-do run } */ /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ extern void abort (void); extern void exit (int); int main (void) { struct foo { int i0; }; int a, b, c, d; a = sizeof (struct foo); if (b = sizeof (struct foo { int i0; int i1; })) c = sizeof (struct foo { int i0; int i1; int i2; }); if (!(a <= b && b <= c)) abort (); if ((b = sizeof (struct foo { int i0; int i1; })), 0) c = sizeof (struct foo { int i0; int i1; int i2; }); else d = sizeof (struct foo { int i0; int i1; int i2; int i3; }); if (!(a <= b && b <= d)) abort (); switch (b = sizeof (struct foo { int i0; int i1; })) default: c = sizeof (struct foo { int i0; int i1; int i2; }); if (!(a <= b && b <= c)) abort (); do c = sizeof (struct foo { int i0; int i1; int i2; }); while ((b = sizeof (struct foo { int i0; int i1; })), 0); if (!(a <= b && b <= c)) abort (); d = 1; while ((b = sizeof (struct foo { int i0; int i1; })), d) (c = sizeof (struct foo { int i0; int i1; int i2; })), d--; if (!(a <= b && b <= c)) abort (); d = 1; for ((b = sizeof (struct foo { int i0; int i1; })); d; d--) c = sizeof (struct foo { int i0; int i1; int i2; }); if (!(a <= b && b <= c)) abort (); d = 1; for ((b = sizeof (struct foo { int i0; int i1; })); d; d--) c = sizeof (struct foo); if (!(a <= b && b == c)) abort (); d = 1; for (; (b = sizeof (struct foo { int i0; int i1; })), d; d--) c = sizeof (struct foo { int i0; int i1; int i2; }); if (!(a <= b && b <= c)) abort (); d = 1; for (; (b = sizeof (struct foo { int i0; int i1; })), d; d--) c = sizeof (struct foo); if (!(a <= b && b == c)) abort (); d = 1; for (; d; (b = sizeof (struct foo { int i0; int i1; })), d--) c = sizeof (struct foo { int i0; int i1; int i2; }); if (!(a <= b && b <= c)) abort (); d = 1; for (; d; (b = sizeof (struct foo { int i0; int i1; })), d--) c = sizeof (struct foo); if (!(a <= b && b == c)) abort (); exit (0); }