1*67e74705SXin Li // RUN: %clang_cc1 -triple %itanium_abi_triple -emit-llvm -o - %s 2*67e74705SXin Li // RUN: %clang_cc1 -triple %ms_abi_triple -fno-rtti -emit-llvm -o - %s 3*67e74705SXin Li 4*67e74705SXin Li struct A { 5*67e74705SXin Li virtual ~A(); 6*67e74705SXin Li }; 7*67e74705SXin Li 8*67e74705SXin Li template <typename Ty> 9*67e74705SXin Li struct B : public A { ~BB10*67e74705SXin Li ~B () { delete [] val; } 11*67e74705SXin Li private: 12*67e74705SXin Li Ty* val; 13*67e74705SXin Li }; 14*67e74705SXin Li 15*67e74705SXin Li template <typename Ty> 16*67e74705SXin Li struct C : public A { 17*67e74705SXin Li C (); 18*67e74705SXin Li ~C (); 19*67e74705SXin Li }; 20*67e74705SXin Li 21*67e74705SXin Li template <typename Ty> 22*67e74705SXin Li struct D : public A { DD23*67e74705SXin Li D () {} 24*67e74705SXin Li private: 25*67e74705SXin Li B<C<Ty> > blocks; 26*67e74705SXin Li }; 27*67e74705SXin Li 28*67e74705SXin Li template class D<double>; 29