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 Gregorint 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