Commit 7978192f by Jeffrey A Law Committed by Jeff Law

pa.md (call, call_value): Do not emit a blockage after restoring the PIC register.

        * pa.md (call, call_value): Do not emit a blockage after restoring
        the PIC register.

From-SVN: r30096
parent 1bef1e7c
Tue Oct 19 23:43:50 1999 Jeffrey A Law (law@cygnus.com)
* pa.md (call, call_value): Do not emit a blockage after restoring
the PIC register.
Tue Oct 19 17:22:39 1999 Mark Mitchell <mark@codesourcery.com>
* c-typeck.c (c_expand_asm_operands): Fix typo.
......
......@@ -4731,6 +4731,8 @@
if (flag_pic)
{
use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn), pic_offset_table_rtx);
use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn),
gen_rtx_REG (word_mode, PIC_OFFSET_TABLE_REGNUM_SAVED));
/* After each call we must restore the PIC register, even if it
doesn't appear to be used.
......@@ -4739,17 +4741,6 @@
stored the PIC register in. */
emit_move_insn (pic_offset_table_rtx,
gen_rtx_REG (word_mode, PIC_OFFSET_TABLE_REGNUM_SAVED));
emit_insn (gen_rtx_USE (VOIDmode, pic_offset_table_rtx));
/* Gross. We have to keep the scheduler from moving the restore
of the PIC register away from the call. SCHED_GROUP_P is
supposed to do this, but for some reason the compiler will
go into an infinite loop when we use that.
This method (blockage insn) may make worse code (then again
it may not since calls are nearly blockages anyway), but at
least it should work. */
emit_insn (gen_blockage ());
}
DONE;
}")
......@@ -4888,6 +4879,8 @@
if (flag_pic)
{
use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn), pic_offset_table_rtx);
use_reg (&CALL_INSN_FUNCTION_USAGE (call_insn),
gen_rtx_REG (word_mode, PIC_OFFSET_TABLE_REGNUM_SAVED));
/* After each call we must restore the PIC register, even if it
doesn't appear to be used.
......@@ -4896,17 +4889,6 @@
stored the PIC register in. */
emit_move_insn (pic_offset_table_rtx,
gen_rtx_REG (word_mode, PIC_OFFSET_TABLE_REGNUM_SAVED));
emit_insn (gen_rtx_USE (VOIDmode, pic_offset_table_rtx));
/* Gross. We have to keep the scheduler from moving the restore
of the PIC register away from the call. SCHED_GROUP_P is
supposed to do this, but for some reason the compiler will
go into an infinite loop when we use that.
This method (blockage insn) may make worse code (then again
it may not since calls are nearly blockages anyway), but at
least it should work. */
emit_insn (gen_blockage ());
}
DONE;
}")
......
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