/* PR middle-end/98160 - ICE in warn_dealloc_offset on member placement | |
new and delete | |
{ dg-do compile } | |
{ dg-options "-O2 -Wall" } */ | |
typedef __SIZE_TYPE__ size_t; | |
void* (*pf) (size_t); | |
struct A; | |
struct B | |
{ | |
B (); | |
void* operator new (size_t, A*); | |
void operator delete (void*, A*); | |
}; | |
void operator delete (void *, A*); | |
void B::operator delete (void*, A *p) | |
{ | |
void *q = pf (1); | |
::operator delete ((char*)q + 1, p); | |
} | |
void* f (A *p) | |
{ | |
return new (p) B; | |
} |