PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / init / new17.C
blobf6a3231f9aa7eb8abdf061b50073176bc0cd37c3
1 // { dg-do compile }
2 // { dg-options "-O2 -fstrict-aliasing -fno-store-merging -fdump-tree-optimized" }
4 // Test that placement new does not introduce an unnecessary memory
5 // barrier.
6 // See PR 29286.
8 typedef __SIZE_TYPE__ size_t;
10 inline void* operator new(size_t, void* __p) throw() { return __p; }
12 template <class T, int D>
13 class Vector
15 public:
16    Vector()
17    {
18      for (int i = 0; i < D; ++i)
19         new (&x_m[i]) T();
20    }
21    T& operator[](int i) { return x_m[i]; }
23 private:
24    T x_m[D];
27 void foo(Vector<float, 3> *m)
29   Vector<float, 3> v;
30   v[0] = 1.0;
31   v[1] = 2.0;
32   v[3] = 3.0;
33   *m = v;
36 // { dg-final { scan-tree-dump-times "= 0\.0" 1 "optimized" } }