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 7 struct C 8 { foo3C9 __attribute__((externally_visible)) void foo3 (void) { } 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 35 struct D 36 { 37 static int d __attribute__((externally_visible)); 38 }; 39