diff options
author | Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de> | 1997-11-21 20:51:30 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1997-11-21 15:51:30 -0500 |
commit | 72eb10386ddf1c698a54b56efa3468a9e7a57639 (patch) | |
tree | 8c7af87a8c34fa5ccd349a47f8240ea2d2cc4952 | |
parent | 6c20b7e97e520789f6fcd11f3b6326394fbc1697 (diff) | |
download | gcc-72eb10386ddf1c698a54b56efa3468a9e7a57639.zip gcc-72eb10386ddf1c698a54b56efa3468a9e7a57639.tar.gz gcc-72eb10386ddf1c698a54b56efa3468a9e7a57639.tar.bz2 |
* stmt.c (expand_end_bindings): Allow jump into block with cleanups.
From-SVN: r16654
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/stmt.c | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a1369c8..06d0b70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Fri Nov 21 12:49:56 1997 Bruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de> + + * stmt.c (expand_end_bindings): Allow jump into block with cleanups. + Fri Nov 21 12:18:51 1997 Jason Merrill <jason@yorick.cygnus.com> * except.h: Add outer_context_label_stack. @@ -3411,10 +3411,10 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) emit_label (afterward); } - /* Don't allow jumping into a block that has cleanups or a stack level. */ + /* Don't allow jumping into a block that has a stack level. + Cleanups are allowed, though. */ if (dont_jump_in - || thisblock->data.block.stack_level != 0 - || thisblock->data.block.cleanups != 0) + || thisblock->data.block.stack_level != 0) { struct label_chain *chain; @@ -3425,7 +3425,7 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) DECL_TOO_LATE (chain->label) = 1; /* If any goto without a fixup came to this label, that must be an error, because gotos without fixups - come from outside all saved stack-levels and all cleanups. */ + come from outside all saved stack-levels. */ if (TREE_ADDRESSABLE (chain->label)) error_with_decl (chain->label, "label `%s' used before containing binding contour"); |