Commit cda26058 by Richard Kenner Committed by Richard Kenner

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
parent c965b169
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> 2003-03-05 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
* pa.md (return_external_pic): Add !TARGET_PA_20 to constraint. * pa.md (return_external_pic): Add !TARGET_PA_20 to constraint.
......
...@@ -947,9 +947,9 @@ expand_fixups (first_insn) ...@@ -947,9 +947,9 @@ expand_fixups (first_insn)
Gotos that jump out of this contour must restore the Gotos that jump out of this contour must restore the
stack level and do the cleanups before actually jumping. stack level and do the cleanups before actually jumping.
DONT_JUMP_IN nonzero means report error there is a jump into this DONT_JUMP_IN positive means report error if there is a jump into this
contour from before the beginning of the contour. contour from before the beginning of the contour. This is also done if
This is also done if STACK_LEVEL is nonzero. */ STACK_LEVEL is nonzero unless DONT_JUMP_IN is negative. */
static void static void
fixup_gotos (thisblock, stack_level, cleanup_list, first_insn, dont_jump_in) 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) ...@@ -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 It detects only a problem with the innermost block
around the label. */ around the label. */
if (f->target != 0 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->target_rtl)
&& INSN_UID (first_insn) > INSN_UID (f->before_jump) && INSN_UID (first_insn) > INSN_UID (f->before_jump)
&& ! DECL_ERROR_ISSUED (f->target)) && ! DECL_ERROR_ISSUED (f->target))
...@@ -3714,8 +3715,10 @@ warn_about_unused_variables (vars) ...@@ -3714,8 +3715,10 @@ warn_about_unused_variables (vars)
MARK_ENDS is nonzero if we should put a note at the beginning MARK_ENDS is nonzero if we should put a note at the beginning
and end of this binding contour. and end of this binding contour.
DONT_JUMP_IN is nonzero if it is not valid to jump into this contour. DONT_JUMP_IN is positive if it is not valid to jump into this contour,
(That is true automatically if the contour has a saved stack level.) */ 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 void
expand_end_bindings (vars, mark_ends, dont_jump_in) expand_end_bindings (vars, mark_ends, dont_jump_in)
...@@ -3750,8 +3753,8 @@ 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. /* Don't allow jumping into a block that has a stack level.
Cleanups are allowed, though. */ Cleanups are allowed, though. */
if (dont_jump_in if (dont_jump_in > 0
|| thisblock->data.block.stack_level != 0) || (dont_jump_in == 0 && thisblock->data.block.stack_level != 0))
{ {
struct label_chain *chain; struct label_chain *chain;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment