From 31cc58e92d73996720e10f818522e7ac9dc0ef3d Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Mon, 14 Aug 1995 09:01:18 -0400 Subject: [PATCH] (call expanders): Emit a blockage insn after restoring %r19 when generating PIC. From-SVN: r10236 --- gcc/config/pa/pa.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index de8e0812c5a..c2c2a26b5e1 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -3632,6 +3632,26 @@ emit_move_insn (pic_offset_table_rtx, gen_rtx (REG, SImode, 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 ()); + + /* 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; }") -- 2.30.2