public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/113767] New: Missing Destructor Call with goto and return value
@ 2024-02-05 13:19 joerg.richter@pdv-fs.de
2024-02-05 15:46 ` [Bug c++/113767] [11/12/13 Regression] " ppalka at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: joerg.richter@pdv-fs.de @ 2024-02-05 13:19 UTC (permalink / raw)
To: gcc-bugs
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.richter@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?
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/113767] [11/12/13 Regression] Missing Destructor Call with goto and return value
2024-02-05 13:19 [Bug c++/113767] New: Missing Destructor Call with goto and return value joerg.richter@pdv-fs.de
@ 2024-02-05 15:46 ` ppalka at gcc dot gnu.org
2024-02-05 16:37 ` jason at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: ppalka at gcc dot gnu.org @ 2024-02-05 15:46 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113767
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords|needs-bisection |
Target Milestone|--- |13.3
CC| |jason at gcc dot gnu.org,
| |ppalka at gcc dot gnu.org
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=92407
Summary|Missing Destructor Call |[11/12/13 Regression]
|with goto and return value |Missing Destructor Call
| |with goto and return value
--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> ---
Fixed on trunk after r14-1593-g7e0b65b239c3a0, where we get the expected output
Cons
Dest
Cons
Dest
and indeed this seems closely related or even a dup of PR92407 the fix for
which has been backported for 11.5/12.4/13.3/14.
However, using the latest 13/12/11 release branches containing the backported
fix I see we now output
Cons
Dest
Cons
Dest
Dest
instead of
Cons
Cons
Dest
which still seems wrong? (Not sure if generating different wrong code is
considered a regression..)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/113767] [11/12/13 Regression] Missing Destructor Call with goto and return value
2024-02-05 13:19 [Bug c++/113767] New: Missing Destructor Call with goto and return value joerg.richter@pdv-fs.de
2024-02-05 15:46 ` [Bug c++/113767] [11/12/13 Regression] " ppalka at gcc dot gnu.org
@ 2024-02-05 16:37 ` jason at gcc dot gnu.org
2024-02-05 16:38 ` jason at gcc dot gnu.org
2024-02-05 18:20 ` jason at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: jason at gcc dot gnu.org @ 2024-02-05 16:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113767
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
Ever confirmed|0 |1
Last reconfirmed| |2024-02-05
Status|UNCONFIRMED |ASSIGNED
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/113767] [11/12/13 Regression] Missing Destructor Call with goto and return value
2024-02-05 13:19 [Bug c++/113767] New: Missing Destructor Call with goto and return value joerg.richter@pdv-fs.de
2024-02-05 15:46 ` [Bug c++/113767] [11/12/13 Regression] " ppalka at gcc dot gnu.org
2024-02-05 16:37 ` jason at gcc dot gnu.org
@ 2024-02-05 16:38 ` jason at gcc dot gnu.org
2024-02-05 18:20 ` jason at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: jason at gcc dot gnu.org @ 2024-02-05 16:38 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113767
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P3 |P1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/113767] [11/12/13 Regression] Missing Destructor Call with goto and return value
2024-02-05 13:19 [Bug c++/113767] New: Missing Destructor Call with goto and return value joerg.richter@pdv-fs.de
` (2 preceding siblings ...)
2024-02-05 16:38 ` jason at gcc dot gnu.org
@ 2024-02-05 18:20 ` jason at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: jason at gcc dot gnu.org @ 2024-02-05 18:20 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113767
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |DUPLICATE
Status|ASSIGNED |RESOLVED
--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> ---
The fix on the branches is just to disable NRV in the presence of backward
goto, as the fix on the trunk was too involved to backport.
So this testcase no longer puts ss in the return slot in 11/12/13, but instead
returns a copy; the extra destructor call is for the copy. It looks mismatched
because there's no user-defined copy constructor to add another "Cons" line;
adding that makes it look better.
*** This bug has been marked as a duplicate of bug 92407 ***
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-02-05 18:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-05 13:19 [Bug c++/113767] New: Missing Destructor Call with goto and return value joerg.richter@pdv-fs.de
2024-02-05 15:46 ` [Bug c++/113767] [11/12/13 Regression] " ppalka at gcc dot gnu.org
2024-02-05 16:37 ` jason at gcc dot gnu.org
2024-02-05 16:38 ` jason at gcc dot gnu.org
2024-02-05 18:20 ` jason at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).