1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// PR6141
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotemplate<typename T>
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct X {
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  X();
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  template<typename U> X(X<U>);
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  X(const X<T>&);
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao};
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid f(X<int>) { }
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct Y : X<int> { };
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct Z : X<float> { };
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// CHECK: define i32 @main()
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint main() {
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  // CHECK: call void @_ZN1YC1Ev
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  // CHECK: call void @_ZN1XIiEC1ERKS0_
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  // CHECK: call void @_Z1f1XIiE
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  f(Y());
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  // CHECK: call void @_ZN1ZC1Ev
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  // CHECK: call void @_ZN1XIfEC1ERKS0_
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  // CHECK: call void @_ZN1XIiEC1IfEES_IT_E
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  // CHECK: call void @_Z1f1XIiE
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  f(Z());
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
28