summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/local1.c
blob: 9d6fdb167523814c53431c1378f5352d2ed28983 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* This is allowed, with the effect that the 'extern' declaration at block
   scope refers to the same object as the 'static' declaration at file scope.

      C90 6.1.2.2 [as corrected by TC1], C99 6.2.2:

          For an identifier declared with the storage-class specifier
          extern in a scope in which a prior declaration of that
          identifier is visible, if the prior declaration specifies
          internal or external linkage, the linkage of the identifier at
          the later daclaration is the same as the linkage specified at
          the prior declaration.  If no prior declaration is visible,
          or if the prior declaration specifies no linkage, then the
          identifer has external linkage.

   This is PR 14366.  */

static int i;

extern int i;

static void f() {
  extern int i;
}