* stmt.c (expand_end_bindings): Allow jump into block with cleanups.
authorBruno Haible <bruno@linuix.mathematik.uni-karlsruhe.de>
Fri, 21 Nov 1997 20:51:30 +0000 (20:51 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 21 Nov 1997 20:51:30 +0000 (15:51 -0500)
From-SVN: r16654

gcc/ChangeLog
gcc/stmt.c

index a1369c8b5dc9bca6595d3b161524eb349b12e006..06d0b70b80805cf5193ad3e15c91438de68e7f73 100644 (file)
@@ -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.
index 97a8d48a07948469354ac527c0903c6b6d9e6fc9..a99da39346f178d7c378a4d9f37c1ce04fa0ba68 100644 (file)
@@ -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");