view gcc/testsuite/g++.dg/opt/pr25005.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// 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]));
}