1 /* { dg-do compile } */ 2 /* { dg-require-visibility "" } */ 3 /* { dg-options "-fvisibility-inlines-hidden" } */ 4 /* { dg-final { scan-not-hidden "_ZN1IIiE3fooEv" } } */ 5 /* { dg-final { scan-not-hidden "_ZN1OIiE3fooEv" } } */ 6 /* { dg-final { scan-hidden "_ZN1S3fooEv" } } */ 7 8 template <class T> 9 struct O { fooO10 static inline void foo() { } 11 }; 12 13 template void O<int>::foo(); 14 15 template <class T> 16 struct I { fooI17 static inline void foo() { } 18 }; 19 20 extern template void I<int>::foo(); 21 22 struct S { fooS23 static inline void foo() { } 24 }; 25 bar()26void bar() { 27 I<int>::foo(); 28 O<int>::foo(); 29 S::foo(); 30 } 31