summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/local1.c
blob: e9f653bcc56c2531d27ee26d45dcdca306e78752 (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;
}