OSDN Git Service

(call expanders): Emit a blockage insn after restoring %r19 when
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Aug 1995 13:01:18 +0000 (13:01 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Aug 1995 13:01:18 +0000 (13:01 +0000)
generating PIC.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10236 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/config/pa/pa.md

index de8e081..c2c2a26 100644 (file)
       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;
 }")