(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
warn/
Warray-bounds-16.C
/* PR tree-optimization/92879 - incorrect warning of __builtin_memset
   offset is out of the bounds on zero-size allocation and initialization
   { dg-do compile }
   { dg-options "-O2 -Wall -fdump-tree-optimized" } */

inline void* operator new (__SIZE_TYPE__, void * v)
{
  return v;
}

struct S
{
  int* p;
  int m;

  S (int i)
  {
    m = i;
    p = (int*) new unsigned char [sizeof (int) * m];

    for (int i = 0; i < m; i++)
      new (p + i) int (); /* { dg-bogus "bounds" "pr102690" { xfail *-*-* } } */
  }
};

S a (0);

/* The loop cannot be eliminated since the global 'new' can change 'm'.  */
/* { dg-final { scan-tree-dump-not "goto" "optimized" { xfail *-*-* } } } */