/* { dg-do run } */
/* { dg-shouldfail "asan" } */
/* { dg-skip-if "" { *-*-* }  { "*" } { "-O0" } } */
#include <stdlib.h>
typedef __SIZE_TYPE__ size_t;
inline void * operator new (size_t, void *p) { return p; }
struct vec
{
  int size;
};
struct vnull
{
  operator vec() { return vec(); }
};
vnull vNULL;
struct A
{
  A(): value2 (vNULL), value3 (vNULL) {}
  int value;
  vec value2;
  vec value3;
};
int main()
{
  int *array = (int *)malloc (sizeof (int) * 1);
  A *a = new (array) A ();
  free (array);
}
/* { dg-output "ERROR: AddressSanitizer: heap-buffer-overflow.*(\n|\r\n|\r)" } */
/* { dg-output "    #0 0x\[0-9a-f\]+ +in A::A()" } */