xref: /aosp_15_r20/external/clang/test/CodeGenCXX/specialized-static-data-mem-init.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s
2*67e74705SXin Li // rdar: // 8562966
3*67e74705SXin Li // pr8409
4*67e74705SXin Li 
5*67e74705SXin Li // CHECK: @_ZN1CIiE11needs_guardE = linkonce_odr global
6*67e74705SXin Li // CHECK: @_ZGVN1CIiE11needs_guardE = linkonce_odr global
7*67e74705SXin Li 
8*67e74705SXin Li struct K
9*67e74705SXin Li {
10*67e74705SXin Li   K();
11*67e74705SXin Li   K(const K &);
12*67e74705SXin Li   ~K();
13*67e74705SXin Li   void PrintNumK();
14*67e74705SXin Li };
15*67e74705SXin Li 
16*67e74705SXin Li template<typename T>
17*67e74705SXin Li struct C
18*67e74705SXin Li {
GoC19*67e74705SXin Li   void Go() { needs_guard.PrintNumK(); }
20*67e74705SXin Li   static K needs_guard;
21*67e74705SXin Li };
22*67e74705SXin Li 
23*67e74705SXin Li template<typename T> K C<T>::needs_guard;
24*67e74705SXin Li 
F()25*67e74705SXin Li void F()
26*67e74705SXin Li {
27*67e74705SXin Li   C<int>().Go();
28*67e74705SXin Li }
29*67e74705SXin Li 
30