stmt.c (fixup_gotos): Change meaning of DONT_JUMP_IN.

* stmt.c (fixup_gotos): Change meaning of DONT_JUMP_IN.
	(expand_end_bindings): Likewise.

From-SVN: r63874
This commit is contained in:
Richard Kenner 2003-03-05 23:56:15 +00:00 committed by Richard Kenner
parent c965b16943
commit cda2605831
2 changed files with 16 additions and 8 deletions

View File

@ -1,3 +1,8 @@
Wed Mar 5 18:55:02 2003 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stmt.c (fixup_gotos): Change meaning of DONT_JUMP_IN.
(expand_end_bindings): Likewise.
2003-03-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* pa.md (return_external_pic): Add !TARGET_PA_20 to constraint.

View File

@ -947,9 +947,9 @@ expand_fixups (first_insn)
Gotos that jump out of this contour must restore the
stack level and do the cleanups before actually jumping.
DONT_JUMP_IN nonzero means report error there is a jump into this
contour from before the beginning of the contour.
This is also done if STACK_LEVEL is nonzero. */
DONT_JUMP_IN positive means report error if there is a jump into this
contour from before the beginning of the contour. This is also done if
STACK_LEVEL is nonzero unless DONT_JUMP_IN is negative. */
static void
fixup_gotos (thisblock, stack_level, cleanup_list, first_insn, dont_jump_in)
@ -991,7 +991,8 @@ fixup_gotos (thisblock, stack_level, cleanup_list, first_insn, dont_jump_in)
It detects only a problem with the innermost block
around the label. */
if (f->target != 0
&& (dont_jump_in || stack_level || cleanup_list)
&& (dont_jump_in > 0 || (dont_jump_in == 0 && stack_level)
|| cleanup_list)
&& INSN_UID (first_insn) < INSN_UID (f->target_rtl)
&& INSN_UID (first_insn) > INSN_UID (f->before_jump)
&& ! DECL_ERROR_ISSUED (f->target))
@ -3714,8 +3715,10 @@ warn_about_unused_variables (vars)
MARK_ENDS is nonzero if we should put a note at the beginning
and end of this binding contour.
DONT_JUMP_IN is nonzero if it is not valid to jump into this contour.
(That is true automatically if the contour has a saved stack level.) */
DONT_JUMP_IN is positive if it is not valid to jump into this contour,
zero if we can jump into this contour only if it does not have a saved
stack level, and negative if we are not to check for invalid use of
labels (because the front end does that). */
void
expand_end_bindings (vars, mark_ends, dont_jump_in)
@ -3750,8 +3753,8 @@ expand_end_bindings (vars, mark_ends, dont_jump_in)
/* 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)
if (dont_jump_in > 0
|| (dont_jump_in == 0 && thisblock->data.block.stack_level != 0))
{
struct label_chain *chain;