https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91434
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This code has undefined behaviour:
int main()
{
FSPI pi;
FSPG* pg = new FSPG();
new (&pi.m_a) FSPGI(pg);
pi.m_a.~FSPGI();
return 0;
}
pi.m_a is part of an object on the stack, so its destructor will run
automatically. If you invoke it explicitly as pi.m_a.~FSPGI() then you cause
the same object to be destroyed twice. This is undefined. You need to fix your
code.
