1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - | FileCheck %s 2*67e74705SXin Li // rdar: //8620524 3*67e74705SXin Li // PR7851 4*67e74705SXin Li struct string { 5*67e74705SXin Li string (const string& ); 6*67e74705SXin Li string (); 7*67e74705SXin Li ~string(); 8*67e74705SXin Li }; 9*67e74705SXin Li 10*67e74705SXin Li string operator + (char ch, const string&); 11*67e74705SXin Li 12*67e74705SXin Li template <class T> IntToString(T a)13*67e74705SXin Livoid IntToString(T a) 14*67e74705SXin Li { 15*67e74705SXin Li string result; 16*67e74705SXin Li T digit; 17*67e74705SXin Li char((digit < 10 ? '0' : 'a') + digit) + result; 18*67e74705SXin Li } 19*67e74705SXin Li main()20*67e74705SXin Liint main() { 21*67e74705SXin Li // CHECK-LABEL: define linkonce_odr {{.*}}void @_Z11IntToStringIcEvT_( 22*67e74705SXin Li IntToString('a'); 23*67e74705SXin Li } 24*67e74705SXin Li 25