1// PR c++/33025
2// { dg-do run }
3// { dg-options "-O2" }
4
5typedef __SIZE_TYPE__ size_t;
6inline void *operator new (size_t, void *p) throw () { return p; }
7extern "C" void abort ();
8
9int
10main()
11{
12  const unsigned num = 10;
13  unsigned *data = new unsigned[2 * num];
14  unsigned *ptr = data;
15  for (unsigned i = 0; i < 2 * num; ++i)
16    (i % 2 == 0) ? new (ptr) unsigned (2) : new (ptr++) unsigned (1);
17  if (ptr - data != num)
18    abort ();
19  return 0;
20}
21