| // RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm -o - %s | |
| // RUN: %clang_cc1 -triple %ms_abi_triple -fno-rtti -emit-llvm -o - %s | |
| struct A { | |
| virtual ~A(); | |
| }; | |
| template <typename Ty> | |
| struct B : public A { | |
| ~B () { delete [] val; } | |
| private: | |
| Ty* val; | |
| }; | |
| template <typename Ty> | |
| struct C : public A { | |
| C (); | |
| ~C (); | |
| }; | |
| template <typename Ty> | |
| struct D : public A { | |
| D () {} | |
| private: | |
| B<C<Ty> > blocks; | |
| }; | |
| template class D<double>; |