(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
analyzer/
out-of-bounds-placement-new.C
/* Reduced from pr100244.C.  */
inline void *operator new (__SIZE_TYPE__, void *__p) { return __p; }

struct int_container {
  int i;
  int *addr () { return &i; }
};

struct int_and_addr {
  int i;
  int *addr;
  int_and_addr () { addr = &i; } /* { dg-warning "overflow" } */
};

int test (int_container ic)
{
  int_and_addr *iaddr = new (ic.addr ()) int_and_addr;
  return iaddr->i;
}