10acd8a75SNAKAMURA Takumi // REQUIRES: x86-registered-target
29ca5c425SRichard Smith // RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
319ae1175STim Northover // RUN: FileCheck -check-prefix CHECK-LP64 --input-file=%t-64.s %s
49ca5c425SRichard Smith // RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
519ae1175STim Northover // RUN: FileCheck -check-prefix CHECK-LP32 --input-file=%t-32.s %s
6a3a3f6feSDouglas Gregor 
7a3a3f6feSDouglas Gregor // PR4826
8a3a3f6feSDouglas Gregor struct A {
AA9a3a3f6feSDouglas Gregor   A() {
10a3a3f6feSDouglas Gregor   }
11a3a3f6feSDouglas Gregor };
12a3a3f6feSDouglas Gregor 
13a3a3f6feSDouglas Gregor template<typename T>
14a3a3f6feSDouglas Gregor struct B {
BB15a3a3f6feSDouglas Gregor   B(T) {}
16a3a3f6feSDouglas Gregor 
17a3a3f6feSDouglas Gregor   A nodes;
18a3a3f6feSDouglas Gregor };
19a3a3f6feSDouglas Gregor 
203117e2b9SFariborz Jahanian 
213117e2b9SFariborz Jahanian // PR4853
223117e2b9SFariborz Jahanian template <typename T> class List {
233117e2b9SFariborz Jahanian public:
List()243117e2b9SFariborz Jahanian   List(){ }     // List<BinomialNode<int>*>::List() remains undefined.
~List()2537d06568SFariborz Jahanian   ~List() {}
263117e2b9SFariborz Jahanian };
273117e2b9SFariborz Jahanian 
2859a1cd4aSFariborz Jahanian template <typename T> class Node {
2959a1cd4aSFariborz Jahanian  int i;
3059a1cd4aSFariborz Jahanian public:
Node()3159a1cd4aSFariborz Jahanian  Node(){ }      // Node<BinomialNode<int>*>::Node() remains undefined.
~Node()3237d06568SFariborz Jahanian  ~Node() {}
3359a1cd4aSFariborz Jahanian };
3459a1cd4aSFariborz Jahanian 
3559a1cd4aSFariborz Jahanian 
3659a1cd4aSFariborz Jahanian template<typename T> class BinomialNode : Node<BinomialNode<T>*> {
373117e2b9SFariborz Jahanian public:
BinomialNode(T value)383117e2b9SFariborz Jahanian   BinomialNode(T value) {}
393117e2b9SFariborz Jahanian   List<BinomialNode<T>*> nodes;
403117e2b9SFariborz Jahanian };
413117e2b9SFariborz Jahanian 
main()42a3a3f6feSDouglas Gregor int main() {
43a3a3f6feSDouglas Gregor   B<int> *n = new B<int>(4);
443117e2b9SFariborz Jahanian   BinomialNode<int> *node = new BinomialNode<int>(1);
4537d06568SFariborz Jahanian   delete node;
46a3a3f6feSDouglas Gregor }
473117e2b9SFariborz Jahanian 
48*e5df59ffSRafael Espindola // CHECK-LP64: __ZN4ListIP12BinomialNodeIiEED1Ev:
49e36a6b3eSAnders Carlsson // CHECK-LP64: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
503117e2b9SFariborz Jahanian // CHECK-LP64: __ZN4ListIP12BinomialNodeIiEEC1Ev:
513117e2b9SFariborz Jahanian 
52*e5df59ffSRafael Espindola // CHECK-LP32: __ZN4ListIP12BinomialNodeIiEED1Ev:
53e36a6b3eSAnders Carlsson // CHECK-LP32: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
543117e2b9SFariborz Jahanian // CHECK-LP32: __ZN4ListIP12BinomialNodeIiEEC1Ev:
55