Commit ab00eb0a by Jim Wilson Committed by Jim Wilson

Fix shared library problem found by GNAT users.

	* mips.c (mips_expand_epilogue): Emit blockage insn before call to
	save_restore_insns if no FP and GP will be restored.

From-SVN: r16327
parent 31c8581d
Tue Nov 4 12:30:28 1997 Jim Wilson <wilson@cygnus.com>
Tue Nov 4 16:55:11 1997 Jim Wilson <wilson@cygnus.com>
* mips.c (mips_expand_epilogue): Emit blockage insn before call to
save_restore_insns if no FP and GP will be restored.
* dwarf2out.c (expand_builtin_dwarf_reg_size): New variable mode.
Convert CCmode to word_mode before calling GET_MODE_SIZE.
......
......@@ -5591,6 +5591,13 @@ mips_expand_epilogue ()
else
emit_insn (gen_movsi (stack_pointer_rtx, frame_pointer_rtx));
}
/* The GP/PIC register is implicitly used by all SYMBOL_REFs, so if we
are going to restore it, then we must emit a blockage insn to
prevent the scheduler from moving the restore out of the epilogue. */
else if (TARGET_ABICALLS && mips_abi != ABI_32
&& (current_frame_info.mask
& (1L << (PIC_OFFSET_TABLE_REGNUM - GP_REG_FIRST))))
emit_insn (gen_blockage ());
save_restore_insns (FALSE, tmp_rtx, tsize, (FILE *)0);
......
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