// { dg-do compile }
// { dg-options "-O2 -fstrict-aliasing -fno-store-merging -fdump-tree-optimized" }

// Test that placement new does not introduce an unnecessary memory
// barrier.
// See PR 29286.

typedef __SIZE_TYPE__ size_t;

inline void* operator new(size_t, void* __p) throw() { return __p; }

template <class T, int D>
class Vector
{
public:
   Vector()
   {
     for (int i = 0; i < D; ++i)
        new (&x_m[i]) T();
   }
   T& operator[](int i) { return x_m[i]; }

private:
   T x_m[D];
};

void foo(Vector<float, 3> *m)
{
  Vector<float, 3> v;
  v[0] = 1.0;
  v[1] = 2.0;
  v[3] = 3.0;
  *m = v;
}

// { dg-final { scan-tree-dump-times "= 0\.0" 1 "optimized" } }
