/* 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
	  identifier has external linkage.

   This is PR 14366.  */

static int i;

extern int i;

static void f() {
  extern int i;
}
