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: [email protected]
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?