1*67e74705SXin Li // RUN: %clang_cc1 -fvisibility hidden -triple %itanium_abi_triple -emit-llvm -o - %s | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // Verify that symbols are hidden. 4*67e74705SXin Li // CHECK: @_ZN1CIiE5Inner6Inner26StaticE = weak_odr hidden global 5*67e74705SXin Li // CHECK-LABEL: define weak_odr hidden {{.*}}void @_ZN1CIiE5Inner1fEv 6*67e74705SXin Li // CHECK-LABEL: define weak_odr hidden {{.*}}void @_ZN1CIiE5Inner6Inner21gEv 7*67e74705SXin Li 8*67e74705SXin Li template<typename T> 9*67e74705SXin Li struct C { 10*67e74705SXin Li struct Inner { 11*67e74705SXin Li void f(); 12*67e74705SXin Li struct Inner2 { 13*67e74705SXin Li void g(); 14*67e74705SXin Li static int Static; 15*67e74705SXin Li }; 16*67e74705SXin Li }; 17*67e74705SXin Li }; 18*67e74705SXin Li f()19*67e74705SXin Litemplate<typename T> void C<T>::Inner::f() { } g()20*67e74705SXin Litemplate<typename T> void C<T>::Inner::Inner2::g() { } 21*67e74705SXin Li template<typename T> int C<T>::Inner::Inner2::Static; 22*67e74705SXin Li 23*67e74705SXin Li extern template struct C<int>; 24*67e74705SXin Li template struct C<int>; 25