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

            Bug ID: 116346
           Summary: Bad __cxa_atexit location for extended init ref
                    temporaries
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org
  Target Milestone: ---

Consider
struct B { B (); ~B (); };
struct A { A (); ~A (); };
A foo (const B &, const B &);
const A &x = foo (B {}, B {});
I see
__cxa_atexit (__dt_comp , &_ZGR1x_, &__dso_handle);
call before the first B::B() call, that looks wrong to me, shouldn't that be
done right before the foo call or right after it?
If B::B() throws, then _ZGR1x_ will not be constructed but will be destructed.

Reply via email to