i386.c (output_move_memory): Remove.
authorJohn Wehle <john@feith.com>
Wed, 7 Apr 1999 10:25:42 +0000 (10:25 +0000)
committerJohn Wehle <wehle@gcc.gnu.org>
Wed, 7 Apr 1999 10:25:42 +0000 (10:25 +0000)
* i386.c (output_move_memory): Remove.
* i386.h: Likewise.
* i386.md (movsi, movhi, movstricthi, movqi, movstrictqi,
movsf, movdf, movxf, movdi): Check no_new_pseudos instead
of (reload_in_progress | reload_completed).

From-SVN: r26258

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/config/i386/i386.md

index e13b8ee129296c98818474a3483df0f6639623ad..816008177a9bc7aa3fcb533108dad248b19a2ad0 100644 (file)
@@ -1,3 +1,12 @@
+Wed Apr  7 13:16:22 EDT 1999  John Wehle  (john@feith.com)
+
+       * i386.c (output_move_memory): Remove.
+       * i386.h: Likewise.
+
+       * i386.md (movsi, movhi, movstricthi, movqi, movstrictqi,
+       movsf, movdf, movxf, movdi): Check no_new_pseudos instead
+       of (reload_in_progress | reload_completed).
+
 Wed Apr  7 03:16:45 1999  Richard Henderson  <rth@cygnus.com>
 
        * alpha.c (reg_no_subreg_operand): New function.
index 81a024a275c36fe1b12f5c37e80f9f87d5f523ac..adec5a2c9622141f1d0113b6e5815530a68d267e 100644 (file)
@@ -1480,125 +1480,6 @@ output_move_pushmem (operands, insn, length, tmp_start, n_operands)
   return "";
 }
 \f
-/* Output the appropriate code to move data between two memory locations */
-
-char *
-output_move_memory (operands, insn, length, tmp_start, n_operands)
-     rtx operands[];
-     rtx insn;
-     int length;
-     int tmp_start;
-     int n_operands;
-{
-  struct
-    {
-      char *load;
-      char *store;
-      rtx   xops[3];
-    } tmp_info[MAX_TMPS];
-
-  rtx dest = operands[0];
-  rtx src  = operands[1];
-  rtx qi_tmp = NULL_RTX;
-  int max_tmps = 0;
-  int offset = 0;
-  int i, num_tmps;
-  rtx xops[3];
-
-  if (GET_CODE (dest) == MEM
-      && GET_CODE (XEXP (dest, 0)) == PRE_INC
-      && XEXP (XEXP (dest, 0), 0) == stack_pointer_rtx)
-    return output_move_pushmem (operands, insn, length, tmp_start, n_operands);
-
-  if (! offsettable_memref_p (src))
-    fatal_insn ("Source is not offsettable", insn);
-
-  if (! offsettable_memref_p (dest))
-    fatal_insn ("Destination is not offsettable", insn);
-
-  /* Figure out which temporary registers we have available */
-  for (i = tmp_start; i < n_operands; i++)
-    {
-      if (GET_CODE (operands[i]) == REG)
-       {
-         if ((length & 1) != 0 && qi_tmp == 0 && QI_REG_P (operands[i]))
-           qi_tmp = operands[i];
-
-         if (reg_overlap_mentioned_p (operands[i], dest))
-           fatal_insn ("Temporary register overlaps the destination", insn);
-
-         if (reg_overlap_mentioned_p (operands[i], src))
-           fatal_insn ("Temporary register overlaps the source", insn);
-
-         tmp_info[max_tmps++].xops[2] = operands[i];
-         if (max_tmps == MAX_TMPS)
-           break;
-       }
-    }
-
-  if (max_tmps == 0)
-    fatal_insn ("No scratch registers were found to do memory->memory moves",
-               insn);
-
-  if ((length & 1) != 0)
-    {
-      if (qi_tmp == 0)
-       fatal_insn ("No byte register found when moving odd # of bytes.",
-                   insn);
-    }
-
-  while (length > 1)
-    {
-      for (num_tmps = 0; num_tmps < max_tmps; num_tmps++)
-       {
-         if (length >= 4)
-           {
-             tmp_info[num_tmps].load    = AS2(mov%L0,%1,%2);
-             tmp_info[num_tmps].store   = AS2(mov%L0,%2,%0);
-             tmp_info[num_tmps].xops[0]
-               = adj_offsettable_operand (dest, offset);
-             tmp_info[num_tmps].xops[1]
-               = adj_offsettable_operand (src, offset);
-
-             offset += 4;
-             length -= 4;
-           }
-
-         else if (length >= 2)
-           {
-             tmp_info[num_tmps].load    = AS2(mov%W0,%1,%2);
-             tmp_info[num_tmps].store   = AS2(mov%W0,%2,%0);
-             tmp_info[num_tmps].xops[0]
-               = adj_offsettable_operand (dest, offset);
-             tmp_info[num_tmps].xops[1]
-               = adj_offsettable_operand (src, offset);
-
-             offset += 2;
-             length -= 2;
-           }
-         else
-           break;
-       }
-
-      for (i = 0; i < num_tmps; i++)
-       output_asm_insn (tmp_info[i].load, tmp_info[i].xops);
-
-      for (i = 0; i < num_tmps; i++)
-       output_asm_insn (tmp_info[i].store, tmp_info[i].xops);
-    }
-
-  if (length == 1)
-    {
-      xops[0] = adj_offsettable_operand (dest, offset);
-      xops[1] = adj_offsettable_operand (src, offset);
-      xops[2] = qi_tmp;
-      output_asm_insn (AS2(mov%B0,%1,%2), xops);
-      output_asm_insn (AS2(mov%B0,%2,%0), xops);
-    }
-
-  return "";
-}
-\f
 int
 standard_80387_constant_p (x)
      rtx x;
index e3d6f18ce0d835ece7c67166c1c139e6c0516ac2..994d15717628f5b2dca7d602dff874a68cc38c35 100644 (file)
@@ -2717,7 +2717,6 @@ extern void output_op_from_reg ();
 extern void output_to_reg ();
 extern char *singlemove_string ();
 extern char *output_move_double ();
-extern char *output_move_memory ();
 extern char *output_move_pushmem ();
 extern int standard_80387_constant_p ();
 extern char *output_move_const_single ();
index c0d52cfd31043c6fba22b10d7e41a140d087f0d8..df87d5cf1b2ad7f156c4ada59a576d59c0295443 100644 (file)
 
   /* Don't generate memory->memory moves, go through a register */
   else if (TARGET_MOVE
-          && (reload_in_progress | reload_completed) == 0
+          && no_new_pseudos == 0
           && GET_CODE (operands[0]) == MEM
           && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {
 {
   /* Don't generate memory->memory moves, go through a register */
   if (TARGET_MOVE
-      && (reload_in_progress | reload_completed) == 0
+      && no_new_pseudos == 0
       && GET_CODE (operands[0]) == MEM
       && GET_CODE (operands[1]) == MEM)
     {