1// { dg-do assemble  }
2// Origin: Jakub Jelinek <jakub@redhat.com>
3
4template<class T> struct foo {
5  foo();
6  void c();
7  static void d(foo* x) { x->c(); }
8};
9template<class T> struct bar {
10  bar();
11};
12template <class T> struct baz {
13  typedef foo<T> t;
14  t *e;
15  baz();
16  ~baz() { t::d(e); }
17};
18template <class T> void foo<T>::c()
19{
20  bar<T>* x = (bar<T>*)this;
21  x->bar<T>::~bar();
22}
23void a(void)
24{
25  baz<char> b;
26}
27