diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.pt/union2.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/union2.C | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/union2.C b/gcc/testsuite/g++.old-deja/g++.pt/union2.C new file mode 100644 index 000000000..fdb038f20 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/union2.C @@ -0,0 +1,18 @@ +// { dg-do assemble } +// Origin: David Mazieres <dm@amsterdam.lcs.mit.edu> + +template<class T> struct vector_base { + typedef T elm_t; +protected: + union { + double alignment_hack; + char defbuf_space[2 * sizeof (elm_t)]; + }; + elm_t *def_basep () { return reinterpret_cast<elm_t *> (defbuf_space); } +}; + +template<class T> struct vector : public vector_base<T> { + vector () { this->def_basep (); } +}; + +vector<int> iv; |