/* { 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)); void foo2 (void) { __attribute__((externally_visible)) void foo3 (void) { } /* { dg-warning "have effect only on public" } */ } __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" } */