------- Comment #6 from jakub at gcc dot gnu dot org 2005-12-20 14:58 ------- Slightly less reduced testcase that doesn't have uninitialized variables:
// { dg-options "-O2 -funroll-loops" } // { dg-do compile } inline void *operator new (__SIZE_TYPE__, void *__p) throw() { return __p; } struct M { ~M() { } }; struct P { P () { v[0] = 0; v[1] = 0; v[2] = 0; } P (const P &x) { for (int i = 0; i < 3; ++i) v[i] = x.v[i]; } double v[3]; }; struct V : public M { V (const P *x, const P *y) { P *b = this->a = ::new P[2]; for (; x != y; ++x, ++b) ::new (b) P(*x); } P *a; }; void bar (const V &); void foo () { const P d[2] = { P(), P() }; bar (V (&d[0], &d[2])); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25005