// { dg-do compile }
// { dg-options "-O -fwhole-program" }

static void foo1 (void) { }					// { dg-warning "have effect only on public" }
extern void foo1 (void) __attribute__((externally_visible));

struct C
{
  __attribute__((externally_visible)) void foo3 (void) { }
};

__attribute__((externally_visible)) static void foo3 (void) { }	// { dg-warning "have effect only on public" }

static int bar1;
extern int bar1 __attribute__((externally_visible));		// { dg-warning "have effect only on public" }

static int bar2 __attribute__((externally_visible));		// { dg-warning "have effect only on public" }

void fn1 (void)
{
  static int bar3 __attribute__((externally_visible));		// { dg-warning "have effect only on public" }
}

void fn2 (void)
{
  int bar4 __attribute__((externally_visible));			// { dg-warning "have effect only on public" }
}

struct A
{
} __attribute__((externally_visible));				// { dg-warning "does not apply to types" }

typedef int B __attribute__((externally_visible));		// { dg-warning "attribute ignored" }

struct D
{
  static int d __attribute__((externally_visible));
};
