diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.pt/crash55.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/crash55.C | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/crash55.C b/gcc/testsuite/g++.old-deja/g++.pt/crash55.C new file mode 100644 index 000000000..57a6606fc --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/crash55.C @@ -0,0 +1,26 @@ +// { dg-do assemble } +// Origin: Jakub Jelinek <jakub@redhat.com> + +template<class T> struct foo { + foo(); + void c(); + static void d(foo* x) { x->c(); } +}; +template<class T> struct bar { + bar(); +}; +template <class T> struct baz { + typedef foo<T> t; + t *e; + baz(); + ~baz() { t::d(e); } +}; +template <class T> void foo<T>::c() +{ + bar<T>* x = (bar<T>*)this; + x->bar<T>::~bar(); +} +void a(void) +{ + baz<char> b; +} |