xref: /aosp_15_r20/external/clang/test/CodeGenCXX/template-dependent-bind-temporary.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
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 Li void 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 Li int main() {
21*67e74705SXin Li // CHECK-LABEL: define linkonce_odr {{.*}}void @_Z11IntToStringIcEvT_(
22*67e74705SXin Li   IntToString('a');
23*67e74705SXin Li }
24*67e74705SXin Li 
25