xref: /aosp_15_r20/external/clang/test/CodeGenCXX/template-inner-struct-visibility-hidden.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li template<typename T> void C<T>::Inner::f() { }
g()20*67e74705SXin Li template<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