Commit dd132134 by Richard Kenner

(expand_goto): Set LABEL_REF_NONLOCAL_P in the LABEL_REF we make in

the non-local case.

From-SVN: r2882
parent 381ee8af
...@@ -625,8 +625,11 @@ expand_goto (label) ...@@ -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) ...@@ -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) ...@@ -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));
......
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