OSDN Git Service

* pa.md (call, call_value): Do not emit a blockage after restoring
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Oct 1999 05:45:09 +0000 (05:45 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Oct 1999 05:45:09 +0000 (05:45 +0000)
        the PIC register.

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

gcc/ChangeLog
gcc/config/pa/pa.md

index 83d0ae9..f650a8c 100644 (file)
@@ -1,3 +1,8 @@
+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.
index ae7a114..72d34e5 100644 (file)
   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.
         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;
 }")
   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.
         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;
 }")