Commit 1f9844c4 by Jim Wilson

(nonlocal_goto): Force operands[0] to be a register.

From-SVN: r2243
parent 8d02144c
...@@ -2632,12 +2632,16 @@ ...@@ -2632,12 +2632,16 @@
"" ""
" "
{ {
rtx temp;
/* Trap instruction to flush all the registers window. */ /* Trap instruction to flush all the registers window. */
emit_insn (gen_rtx (UNSPEC_VOLATILE, VOIDmode, emit_insn (gen_rtx (UNSPEC_VOLATILE, VOIDmode,
gen_rtvec (1, const0_rtx), 0)); gen_rtvec (1, const0_rtx), 0));
/* Load the fp value for the containing fn into %fp. /* Load the fp value for the containing fn into %fp.
This is needed because operands[2] refers to %fp. */ This is needed because operands[2] refers to %fp.
Virtual register instantiation fails if the virtual %fp isn't set from a
register. Thus we must copy operands[0] into a register if it isn't
already one. */
if (GET_CODE (operands[0]) != REG)
operands[0] = force_reg (SImode, operands[0]);
emit_move_insn (virtual_stack_vars_rtx, operands[0]); emit_move_insn (virtual_stack_vars_rtx, operands[0]);
/* Find the containing function's current nonlocal goto handler, /* Find the containing function's current nonlocal goto handler,
which will do any cleanups and then jump to the label. */ which will do any cleanups and then jump to the label. */
......
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