diff options
author | Richard Stallman <rms@gnu.org> | 1993-11-15 01:40:04 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-11-15 01:40:04 +0000 |
commit | ba83886f6e93fe5152c8f5d2df7e8ba845609bfd (patch) | |
tree | 60fc065229575792f87212c8f355097482a48eb2 /gcc | |
parent | 2315a5db3894d58f58e5c8777ea65f1eef854923 (diff) | |
download | gcc-ba83886f6e93fe5152c8f5d2df7e8ba845609bfd.zip gcc-ba83886f6e93fe5152c8f5d2df7e8ba845609bfd.tar.gz gcc-ba83886f6e93fe5152c8f5d2df7e8ba845609bfd.tar.bz2 |
(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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/stmt.c | 21 |
1 files changed, 14 insertions, 7 deletions
@@ -3108,6 +3108,7 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) rtx afterward = gen_label_rtx (); rtx handler_label = gen_label_rtx (); rtx save_receiver = gen_reg_rtx (Pmode); + rtx insns; /* Don't let jump_optimize delete the handler. */ LABEL_PRESERVE_P (handler_label) = 1; @@ -3117,14 +3118,20 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) if (thisblock->next != 0) { emit_move_insn (nonlocal_goto_handler_slot, save_receiver); - emit_insn_before (gen_move_insn (save_receiver, - nonlocal_goto_handler_slot), - thisblock->data.block.first_insn); + + start_sequence (); + 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, - handler_label)), - thisblock->data.block.first_insn); + + start_sequence (); + emit_move_insn (nonlocal_goto_handler_slot, + 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. */ emit_jump (afterward); |