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 Livoid F() 26*67e74705SXin Li { 27*67e74705SXin Li C<int>().Go(); 28*67e74705SXin Li } 29*67e74705SXin Li 30