This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/32080] New: Can goto a function try-block
- From: "andrew dot stubbs at st dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 May 2007 09:14:46 -0000
- Subject: [Bug c++/32080] New: Can goto a function try-block
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
It should not be possible to jump into a function try-block.
The example from the standard, clause 15/2, is rejected properly:
void f() {
goto l1; // Ill-formed
goto l2; // Ill-formed
try {
goto l1; // OK
goto l2; // Ill-formed
l1: ;
} catch (...) {
l2: ;
goto l1; // Ill-formed
goto l2; // OK
}
}
t.cxx: In function ?void f()?:
t.cxx:7: error: jump to label ?l1?
t.cxx:2: error: from here
t.cxx:7: error: enters try block
t.cxx:9: error: jump to label ?l2?
t.cxx:6: error: from here
t.cxx:9: error: enters catch block
t.cxx:9: error: jump to label ?l2?
t.cxx:3: error: from here
t.cxx:9: error: enters catch block
t.cxx:7: error: jump to label ?l1?
t.cxx:10: error: from here
t.cxx:10: error: enters try block
But, if the example is adjusted to use a *function* try-block, then it's a
different story:
void f()
try {
goto l1; // OK
goto l2; // Ill-formed
l1: ;
} catch (...) {
l2: ;
goto l1; // Ill-formed
goto l2; // OK
}
t.cxx: In function ?void f()?:
t.cxx:7: error: jump to label ?l2?
t.cxx:4: error: from here
t.cxx:7: error: enters catch block
The jump into the catch block has been caught, but the jump into the try-block
has been missed.
I know that the standard does not explicitly say that you can't jump into a
_function_ try-block, but it does say you can't jump into a try-block, and this
is merely a variant. Certainly the motivation would be the same in both cases.
--
Summary: Can goto a function try-block
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andrew dot stubbs at st dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32080