(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
c90-scope-1.c
       1  /* Test for new block scopes in C99.  Inspired by C99 Rationale (N897).  */
       2  /* Origin: Joseph Myers <jsm28@cam.ac.uk> */
       3  /* { dg-do run } */
       4  /* { dg-options "-std=iso9899:1990 -pedantic-errors" } */
       5  
       6  struct foo {
       7    char a;
       8  };
       9  
      10  extern void abort (void);
      11  extern void exit (int);
      12  
      13  int
      14  sfoo (void)
      15  {
      16    if (sizeof (struct foo { int a; double b; char *c; void *d; }))
      17      (void) 0;
      18    return sizeof (struct foo);
      19  }
      20  
      21  int
      22  main (void)
      23  {
      24    int t, u;
      25    t = sfoo ();
      26    u = sizeof (struct foo);
      27    /* With C90 scoping rules the new declaration of struct foo is in scope
      28       above; with C99 it is local to the if.
      29    */
      30    if (t == u)
      31      abort (); /* C99 rules apply.  */
      32    else
      33      exit (0); /* C90 rules apply.  */
      34  }