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