https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111771

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2023-10-12
           Keywords|                            |diagnostic, wrong-code
             Status|UNCONFIRMED                 |NEW
                 CC|                            |jason at gcc dot gnu.org
      Known to fail|                            |13.2.1, 7.5.0

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
We have

int main ()
{
  int D.2848;

  {
    struct B b;

    try
      {
        b.D.2778.x = 0;
        B::B (&b);
        D.2848 = b.D.2778.x;
        return D.2848;

but:

void B::B (struct B * const this)
{
  _1 = &this->D.2778;
  A::A (_1);
}


void A::A (struct A * const this)
{
  *this = {CLOBBER};

so A::A invoked by B::B invalidates the initialized storage.  Maybe a
"different" B::B should have been called (one not invoking A::A?).

Reply via email to