10ccb31c389a09216a5b60cf05bd01516ddbe8d4fGalina Kistanova// REQUIRES: x86-registered-target,x86-64-registered-target
2762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -S %s -o %t-64.s
34fcfde4d5c8f25e40720972a5543d538a0dcb220Daniel Dunbar// RUN: FileCheck -check-prefix LP64 --input-file=%t-64.s %s
4762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -triple i386-apple-darwin -std=c++11 -S %s -o %t-32.s
54fcfde4d5c8f25e40720972a5543d538a0dcb220Daniel Dunbar// RUN: FileCheck -check-prefix LP32 --input-file=%t-32.s %s
672f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor
772f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor// PR4826
872f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregorstruct A {
972f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor  A() {
1072f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor  }
1172f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor};
1272f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor
1372f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregortemplate<typename T>
1472f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregorstruct B {
1572f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor  B(T) {}
1672f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor
1772f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor  A nodes;
1872f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor};
1972f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor
20cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian
21cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian// PR4853
22cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahaniantemplate <typename T> class List {
23cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanianpublic:
241eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  List(){ }     // List<BinomialNode<int>*>::List() remains undefined.
2534374e6ce5710a91c478f69379220ff20c3e7f15Fariborz Jahanian  ~List() {}
26cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian};
27cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian
289d436205be3e4c05854530134be61b46b13136ffFariborz Jahaniantemplate <typename T> class Node {
299d436205be3e4c05854530134be61b46b13136ffFariborz Jahanian int i;
309d436205be3e4c05854530134be61b46b13136ffFariborz Jahanianpublic:
319d436205be3e4c05854530134be61b46b13136ffFariborz Jahanian Node(){ }      // Node<BinomialNode<int>*>::Node() remains undefined.
3234374e6ce5710a91c478f69379220ff20c3e7f15Fariborz Jahanian ~Node() {}
339d436205be3e4c05854530134be61b46b13136ffFariborz Jahanian};
349d436205be3e4c05854530134be61b46b13136ffFariborz Jahanian
359d436205be3e4c05854530134be61b46b13136ffFariborz Jahanian
369d436205be3e4c05854530134be61b46b13136ffFariborz Jahaniantemplate<typename T> class BinomialNode : Node<BinomialNode<T>*> {
37cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanianpublic:
38cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian  BinomialNode(T value) {}
39cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian  List<BinomialNode<T>*> nodes;
40cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian};
41cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian
4272f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregorint main() {
4372f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor  B<int> *n = new B<int>(4);
44cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian  BinomialNode<int> *node = new BinomialNode<int>(1);
4534374e6ce5710a91c478f69379220ff20c3e7f15Fariborz Jahanian  delete node;
4672f6d678c8de9f3a770e8ae5fc4979abf3940668Douglas Gregor}
47cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian
48c997d4278d329e18891aac9698fb991b2d4622ebAnders Carlsson// CHECK-LP64: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
49cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian// CHECK-LP64: __ZN4ListIP12BinomialNodeIiEEC1Ev:
5034531470e6f6e394de7fd47d69917db280fee206Eli Friedman// CHECK-LP64: __ZN4ListIP12BinomialNodeIiEED1Ev:
51cf1b9c790ad9c944131e7150ef13e2d421f79e88Fariborz Jahanian
52c997d4278d329e18891aac9698fb991b2d4622ebAnders Carlsson// CHECK-LP32: __ZN4NodeIP12BinomialNodeIiEEC2Ev:
539d436205be3e4c05854530134be61b46b13136ffFariborz Jahanian// CHECK-LP32: __ZN4ListIP12BinomialNodeIiEEC1Ev:
5434531470e6f6e394de7fd47d69917db280fee206Eli Friedman// CHECK-LP32: __ZN4ListIP12BinomialNodeIiEED1Ev:
55