Commit ba83886f by Richard Stallman

(expand_end_bindings): Use emit_move_insn instead of gen_move_insn in case...

(expand_end_bindings): Use emit_move_insn instead of
gen_move_insn in case nonlocal_goto_handler_slot is not a valid memref.

From-SVN: r6091
parent 2315a5db
...@@ -3108,6 +3108,7 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) ...@@ -3108,6 +3108,7 @@ expand_end_bindings (vars, mark_ends, dont_jump_in)
rtx afterward = gen_label_rtx (); rtx afterward = gen_label_rtx ();
rtx handler_label = gen_label_rtx (); rtx handler_label = gen_label_rtx ();
rtx save_receiver = gen_reg_rtx (Pmode); rtx save_receiver = gen_reg_rtx (Pmode);
rtx insns;
/* Don't let jump_optimize delete the handler. */ /* Don't let jump_optimize delete the handler. */
LABEL_PRESERVE_P (handler_label) = 1; LABEL_PRESERVE_P (handler_label) = 1;
...@@ -3117,14 +3118,20 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) ...@@ -3117,14 +3118,20 @@ expand_end_bindings (vars, mark_ends, dont_jump_in)
if (thisblock->next != 0) if (thisblock->next != 0)
{ {
emit_move_insn (nonlocal_goto_handler_slot, save_receiver); emit_move_insn (nonlocal_goto_handler_slot, save_receiver);
emit_insn_before (gen_move_insn (save_receiver,
nonlocal_goto_handler_slot), start_sequence ();
thisblock->data.block.first_insn); emit_move_insn (save_receiver, nonlocal_goto_handler_slot);
insns = get_insns ();
end_sequence ();
emit_insns_before (insns, thisblock->data.block.first_insn);
} }
emit_insn_before (gen_move_insn (nonlocal_goto_handler_slot,
gen_rtx (LABEL_REF, Pmode, start_sequence ();
handler_label)), emit_move_insn (nonlocal_goto_handler_slot,
thisblock->data.block.first_insn); gen_rtx (LABEL_REF, Pmode, handler_label));
insns = get_insns ();
end_sequence ();
emit_insns_before (insns, thisblock->data.block.first_insn);
/* Jump around the handler; it runs only when specially invoked. */ /* Jump around the handler; it runs only when specially invoked. */
emit_jump (afterward); emit_jump (afterward);
......
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