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?).