35 lines
569 B
C
35 lines
569 B
C
// PR target/25005
|
|
// { 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]));
|
|
}
|