1 /* { dg-do compile } */ 2 /* { dg-options "-O -fwhole-program" } */ 3 foo1(void)4static void foo1 (void) { } /* { dg-warning "have effect only on public" } */ 5 extern void foo1 (void) __attribute__((externally_visible)); 6 foo2(void)7void foo2 (void) 8 { 9 __attribute__((externally_visible)) void foo3 (void) { } /* { dg-warning "have effect only on public" } */ 10 } 11 foo3(void)12__attribute__((externally_visible)) static void foo3 (void) { } /* { dg-warning "have effect only on public" } */ 13 14 static int bar1; 15 extern int bar1 __attribute__((externally_visible)); /* { dg-warning "have effect only on public" } */ 16 17 static int bar2 __attribute__((externally_visible)); /* { dg-warning "have effect only on public" } */ 18 fn1(void)19void fn1 (void) 20 { 21 static int bar3 __attribute__((externally_visible)); /* { dg-warning "have effect only on public" } */ 22 } 23 fn2(void)24void fn2 (void) 25 { 26 int bar4 __attribute__((externally_visible)); /* { dg-warning "have effect only on public" } */ 27 } 28 29 struct A 30 { 31 } __attribute__((externally_visible)); /* { dg-warning "does not apply to types" } */ 32 33 typedef int B __attribute__((externally_visible)); /* { dg-warning "attribute ignored" } */ 34