| /* Test for new block scopes in C99. Inspired by C99 Rationale (N897). */ |
| /* Origin: Joseph Myers <jsm28@cam.ac.uk> */ |
| /* { dg-do run } */ |
| /* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ |
| |
| struct foo { |
| char a; |
| }; |
| |
| extern void abort (void); |
| extern void exit (int); |
| |
| int |
| sfoo (void) |
| { |
| if (sizeof (struct foo { int a; double b; char *c; void *d; })) |
| (void) 0; |
| return sizeof (struct foo); |
| } |
| |
| int |
| main (void) |
| { |
| int t, u; |
| t = sfoo (); |
| u = sizeof (struct foo); |
| /* With C90 scoping rules the new declaration of struct foo is in scope |
| above; with C99 it is local to the if. |
| */ |
| if (t == u) |
| exit (0); /* C99 rules apply. */ |
| else |
| abort (); /* C90 rules apply. */ |
| } |