72 lines
2.1 KiB
C
72 lines
2.1 KiB
C
/* Test for new block scopes in C99. Test for each new scope. */
|
|
/* Origin: Joseph Myers <jsm28@cam.ac.uk> */
|
|
/* { 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);
|
|
}
|