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

            Bug ID: 113767
           Summary: Missing Destructor Call with goto and return value
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: joerg.rich...@pdv-fs.de
  Target Milestone: ---

#include <cstdio>

struct S
{

    S()
    {
      printf( "Cons\n" );
    }

    ~S()
    {
      printf( "Dest\n" );
    }
};

S func()
{
  bool first = true;

restart:
  S ss;
  if( first )
  {
    first = false;
    goto restart;
  }
  return ss;
}

int main()
{
    func();
}

Output:
Cons
Cons
Dest

Expected Output:
Cons
Dest
Cons
Dest


https://godbolt.org/z/9n6nnv18P

Seems to be fixed in trunk but not on any released branch. Can the fix be
integrated to the released branches?

Reply via email to