1*67e74705SXin Li // RUN: %clang_cc1 -emit-llvm -triple %itanium_abi_triple %s -o - | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li // CHECK-NOT: ZN12basic_stringIcEC1Ev 4*67e74705SXin Li // CHECK: ZN12basic_stringIcED1Ev 5*67e74705SXin Li // CHECK: ZN12basic_stringIcED1Ev 6*67e74705SXin Li template<class charT> 7*67e74705SXin Li class basic_string 8*67e74705SXin Li { 9*67e74705SXin Li public: 10*67e74705SXin Li basic_string(); 11*67e74705SXin Li ~basic_string(); 12*67e74705SXin Li }; 13*67e74705SXin Li 14*67e74705SXin Li template <class charT> 15*67e74705SXin Li __attribute__ ((__visibility__("hidden"), __always_inline__)) inline basic_string()16*67e74705SXin Libasic_string<charT>::basic_string() 17*67e74705SXin Li { 18*67e74705SXin Li } 19*67e74705SXin Li 20*67e74705SXin Li template <class charT> 21*67e74705SXin Li inline ~basic_string()22*67e74705SXin Libasic_string<charT>::~basic_string() 23*67e74705SXin Li { 24*67e74705SXin Li } 25*67e74705SXin Li 26*67e74705SXin Li typedef basic_string<char> string; 27*67e74705SXin Li 28*67e74705SXin Li extern template class basic_string<char>; 29*67e74705SXin Li main()30*67e74705SXin Liint main() 31*67e74705SXin Li { 32*67e74705SXin Li string s; 33*67e74705SXin Li } 34