diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-12-16 07:25:13 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-12-16 07:25:13 -0500 |
commit | dd132134f35fec8a121aa2710a57d176c2ee66ed (patch) | |
tree | 67769aed3cecc0b55a501f50ea2422afc42eef0f | |
parent | 381ee8af99ad3074e921820775208947d7d3b2a1 (diff) | |
download | gcc-dd132134f35fec8a121aa2710a57d176c2ee66ed.zip gcc-dd132134f35fec8a121aa2710a57d176c2ee66ed.tar.gz gcc-dd132134f35fec8a121aa2710a57d176c2ee66ed.tar.bz2 |
(expand_goto): Set LABEL_REF_NONLOCAL_P in the LABEL_REF we make in
the non-local case.
From-SVN: r2882
-rw-r--r-- | gcc/stmt.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -625,8 +625,11 @@ expand_goto (label) if (context != 0 && context != current_function_decl) { struct function *p = find_function_data (context); + rtx label_ref = gen_rtx (LABEL_REF, Pmode, label_rtx (label)); rtx temp; + 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 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), copy_rtx (p->nonlocal_goto_handler_slot), copy_rtx (p->nonlocal_goto_stack_level), - gen_rtx (LABEL_REF, Pmode, - label_rtx (label)))); + label_ref)); else #endif { @@ -671,8 +673,7 @@ expand_goto (label) emit_stack_restore (SAVE_NONLOCAL, addr, NULL_RTX); /* Put in the static chain register the nonlocal label address. */ - emit_move_insn (static_chain_rtx, - gen_rtx (LABEL_REF, Pmode, label_rtx (label))); + emit_move_insn (static_chain_rtx, label_ref); /* USE of frame_pointer_rtx added for consistency; not clear if really needed. */ emit_insn (gen_rtx (USE, VOIDmode, frame_pointer_rtx)); |