c++: goto entering scope of obj w/ non-trivial dtor [PR103091]
commitb81785eacef2a28e17e17141fcd334f51640feec
authorPatrick Palka <ppalka@redhat.com>
Sun, 7 May 2023 16:09:03 +0000 (7 12:09 -0400)
committerPatrick Palka <ppalka@redhat.com>
Sun, 7 May 2023 16:09:03 +0000 (7 12:09 -0400)
tree69afbea8da959dd329da157f94e9519248541a72
parentb28a7c41fb4697b2d5d9e6e6552b0764bd7d90f0
c++: goto entering scope of obj w/ non-trivial dtor [PR103091]

It seems ever since DR 2256 goto is permitted to cross the initialization
of a trivially initialized object with a non-trivial destructor.  We
already supported this as an -fpermissive extension, so this patch just
makes us unconditionally support this.

DR 2256
PR c++/103091

gcc/cp/ChangeLog:

* decl.cc (decl_jump_unsafe): Return bool instead of int.
Don't consider TYPE_HAS_NONTRIVIAL_DESTRUCTOR.
(check_previous_goto_1): Simplify now that decl_jump_unsafe
returns bool instead of int.
(check_goto): Likewise.

gcc/testsuite/ChangeLog:

* g++.old-deja/g++.other/init9.C: Don't expect diagnostics for
goto made valid by DR 2256.
* g++.dg/init/goto4.C: New test.
gcc/cp/decl.cc
gcc/testsuite/g++.dg/init/goto4.C [new file with mode: 0644]
gcc/testsuite/g++.old-deja/g++.other/init9.C