Commit 554c2941 by Alan Modra Committed by Alan Modra

re PR target/33812 (ICE from epilogue vrsave code)

	PR target/33812
	* config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
	change for vrsave, ie restore after frame pop.

From-SVN: r129511
parent 70365b5c
2007-10-20 Alan Modra <amodra@bigpond.net.au>
PR target/33812
* config/rs6000/rs6000.c (rs6000_emit_epilogue): Revert 2007-05-16
change for vrsave, ie restore after frame pop.
2007-10-19 David S. Miller <davem@davemloft.net> 2007-10-19 David S. Miller <davem@davemloft.net>
* config/sparc/niagara2.md: Fix copyright notice. * config/sparc/niagara2.md: Fix copyright notice.
...@@ -16082,21 +16082,6 @@ rs6000_emit_epilogue (int sibcall) ...@@ -16082,21 +16082,6 @@ rs6000_emit_epilogue (int sibcall)
} }
} }
/* Restore VRSAVE if needed. */
if (TARGET_ALTIVEC && TARGET_ALTIVEC_VRSAVE
&& info->vrsave_mask != 0)
{
rtx addr, mem, reg;
addr = gen_rtx_PLUS (Pmode, frame_reg_rtx,
GEN_INT (info->vrsave_save_offset + sp_offset));
mem = gen_frame_mem (SImode, addr);
reg = gen_rtx_REG (SImode, 12);
emit_move_insn (reg, mem);
emit_insn (generate_set_vrsave (reg, info, 1));
}
/* If we have a frame pointer, a call to alloca, or a large stack /* If we have a frame pointer, a call to alloca, or a large stack
frame, restore the old stack pointer using the backchain. Otherwise, frame, restore the old stack pointer using the backchain. Otherwise,
we know what size to update it with. */ we know what size to update it with. */
...@@ -16123,6 +16108,21 @@ rs6000_emit_epilogue (int sibcall) ...@@ -16123,6 +16108,21 @@ rs6000_emit_epilogue (int sibcall)
sp_offset = 0; sp_offset = 0;
} }
/* Restore VRSAVE if needed. */
if (TARGET_ALTIVEC && TARGET_ALTIVEC_VRSAVE
&& info->vrsave_mask != 0)
{
rtx addr, mem, reg;
addr = gen_rtx_PLUS (Pmode, frame_reg_rtx,
GEN_INT (info->vrsave_save_offset + sp_offset));
mem = gen_frame_mem (SImode, addr);
reg = gen_rtx_REG (SImode, 12);
emit_move_insn (reg, mem);
emit_insn (generate_set_vrsave (reg, info, 1));
}
/* Get the old lr if we saved it. */ /* Get the old lr if we saved it. */
if (info->lr_save_p) if (info->lr_save_p)
{ {
......
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