(expand_goto): Set LABEL_REF_NONLOCAL_P in the LABEL_REF we make in
the non-local case. From-SVN: r2882
This commit is contained in:
parent
381ee8af99
commit
dd132134f3
|
@ -625,8 +625,11 @@ expand_goto (label)
|
||||||
if (context != 0 && context != current_function_decl)
|
if (context != 0 && context != current_function_decl)
|
||||||
{
|
{
|
||||||
struct function *p = find_function_data (context);
|
struct function *p = find_function_data (context);
|
||||||
|
rtx label_ref = gen_rtx (LABEL_REF, Pmode, label_rtx (label));
|
||||||
rtx temp;
|
rtx temp;
|
||||||
|
|
||||||
p->has_nonlocal_label = 1;
|
p->has_nonlocal_label = 1;
|
||||||
|
LABEL_REF_NONLOCAL_P (label_ref) = 1;
|
||||||
|
|
||||||
/* Copy the rtl for the slots so that they won't be shared in
|
/* Copy the rtl for the slots so that they won't be shared in
|
||||||
case the virtual stack vars register gets instantiated differently
|
case the virtual stack vars register gets instantiated differently
|
||||||
|
@ -637,8 +640,7 @@ expand_goto (label)
|
||||||
emit_insn (gen_nonlocal_goto (lookup_static_chain (label),
|
emit_insn (gen_nonlocal_goto (lookup_static_chain (label),
|
||||||
copy_rtx (p->nonlocal_goto_handler_slot),
|
copy_rtx (p->nonlocal_goto_handler_slot),
|
||||||
copy_rtx (p->nonlocal_goto_stack_level),
|
copy_rtx (p->nonlocal_goto_stack_level),
|
||||||
gen_rtx (LABEL_REF, Pmode,
|
label_ref));
|
||||||
label_rtx (label))));
|
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
@ -671,8 +673,7 @@ expand_goto (label)
|
||||||
emit_stack_restore (SAVE_NONLOCAL, addr, NULL_RTX);
|
emit_stack_restore (SAVE_NONLOCAL, addr, NULL_RTX);
|
||||||
|
|
||||||
/* Put in the static chain register the nonlocal label address. */
|
/* Put in the static chain register the nonlocal label address. */
|
||||||
emit_move_insn (static_chain_rtx,
|
emit_move_insn (static_chain_rtx, label_ref);
|
||||||
gen_rtx (LABEL_REF, Pmode, label_rtx (label)));
|
|
||||||
/* USE of frame_pointer_rtx added for consistency; not clear if
|
/* USE of frame_pointer_rtx added for consistency; not clear if
|
||||||
really needed. */
|
really needed. */
|
||||||
emit_insn (gen_rtx (USE, VOIDmode, frame_pointer_rtx));
|
emit_insn (gen_rtx (USE, VOIDmode, frame_pointer_rtx));
|
||||||
|
|
Loading…
Reference in New Issue