xref: /aosp_15_r20/external/clang/test/CodeGenCXX/constructor-template.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // REQUIRES: x86-registered-target
2*67e74705SXin Li // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
3*67e74705SXin Li // RUN: FileCheck -check-prefix CHECK-LP64 --input-file=%t-64.s %s
4*67e74705SXin Li // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
5*67e74705SXin Li // RUN: FileCheck -check-prefix CHECK-LP32 --input-file=%t-32.s %s
6*67e74705SXin Li 
7*67e74705SXin Li // PR4826
8*67e74705SXin Li struct A {
AA9*67e74705SXin Li   A() {
10*67e74705SXin Li   }
11*67e74705SXin Li };
12*67e74705SXin Li 
13*67e74705SXin Li template<typename T>
14*67e74705SXin Li struct B {
BB15*67e74705SXin Li   B(T) {}
16*67e74705SXin Li 
17*67e74705SXin Li   A nodes;
18*67e74705SXin Li };
19*67e74705SXin Li 
20*67e74705SXin Li 
21*67e74705SXin Li // PR4853
22*67e74705SXin Li template <typename T> class List {
23*67e74705SXin Li public:
List()24*67e74705SXin Li   List(){ }     // List<BinomialNode<int>*>::List() remains undefined.
~List()25*67e74705SXin Li   ~List() {}
26*67e74705SXin Li };
27*67e74705SXin Li 
28*67e74705SXin Li template <typename T> class Node {
29*67e74705SXin Li  int i;
30*67e74705SXin Li public:
Node()31*67e74705SXin Li  Node(){ }      // Node<BinomialNode<int>*>::Node() remains undefined.
~Node()32*67e74705SXin Li  ~Node() {}
33*67e74705SXin Li };
34*67e74705SXin Li 
35*67e74705SXin Li 
36*67e74705SXin Li template<typename T> class BinomialNode : Node<BinomialNode<T>*> {
37*67e74705SXin Li public:
BinomialNode(T value)38*67e74705SXin Li   BinomialNode(T value) {}
39*67e74705SXin Li   List<BinomialNode<T>*> nodes;
40*67e74705SXin Li };
41*67e74705SXin Li 
main()42*67e74705SXin Li int main() {
43*67e74705SXin Li   B<int> *n = new B<int>(4);
44*67e74705SXin Li   BinomialNode<int> *node = new BinomialNode<int>(1);
45*67e74705SXin Li   delete node;
46*67e74705SXin Li }
47*67e74705SXin Li 
48*67e74705SXin Li // CHECK-LP64: __ZN4ListIP12BinomialNodeIiEED1Ev:
49*67e74705SXin Li // CHECK-LP64: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
50*67e74705SXin Li // CHECK-LP64: __ZN4ListIP12BinomialNodeIiEEC1Ev:
51*67e74705SXin Li 
52*67e74705SXin Li // CHECK-LP32: __ZN4ListIP12BinomialNodeIiEED1Ev:
53*67e74705SXin Li // CHECK-LP32: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
54*67e74705SXin Li // CHECK-LP32: __ZN4ListIP12BinomialNodeIiEEC1Ev:
55