Delete two unused functions
authorBernd Schmidt <bernds@cygnus.co.uk>
Sun, 14 Nov 1999 11:45:55 +0000 (11:45 +0000)
committerBernd Schmidt <crux@gcc.gnu.org>
Sun, 14 Nov 1999 11:45:55 +0000 (11:45 +0000)
From-SVN: r30526

gcc/ChangeLog
gcc/cse.c

index cb189f764e51de0f73edd4e45a5ff427ffaab6b8..45949899068e4a56e6bad35207d4ec08cb3f6740 100644 (file)
@@ -1,3 +1,8 @@
+Sun Nov 14 12:41:57 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * cse.c (set_nonvarying_address_components): Delete unused function.
+       (refers_to_p): Likewise.
+
 Fri Nov 12 20:53:22 1999  Jeffrey A Law  (law@cygnus.com)
 
        * function.c (diddle_return_value): Set REG_FUNCTION_VALUE_P as
index caee712a251bd264fc22ca102fd800207b132168..0736cd967e834677eb47bc7b18c7386d03060fc2 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -669,10 +669,6 @@ static rtx use_related_value       PROTO((rtx, struct table_elt *));
 static unsigned canon_hash     PROTO((rtx, enum machine_mode));
 static unsigned safe_hash      PROTO((rtx, enum machine_mode));
 static int exp_equiv_p         PROTO((rtx, rtx, int, int));
-static void set_nonvarying_address_components PROTO((rtx, int, rtx *,
-                                                    HOST_WIDE_INT *,
-                                                    HOST_WIDE_INT *));
-static int refers_to_p         PROTO((rtx, rtx));
 static rtx canon_reg           PROTO((rtx, rtx));
 static void find_best_addr     PROTO((rtx, rtx *));
 static enum rtx_code find_comparison_args PROTO((enum rtx_code, rtx *, rtx *,
@@ -2455,210 +2451,6 @@ exp_equiv_p (x, y, validate, equal_values)
   return 1;
 }
 \f
-/* Return 1 iff any subexpression of X matches Y.
-   Here we do not require that X or Y be valid (for registers referred to)
-   for being in the hash table.  */
-
-static int
-refers_to_p (x, y)
-     rtx x, y;
-{
-  register int i;
-  register enum rtx_code code;
-  register const char *fmt;
-
- repeat:
-  if (x == y)
-    return 1;
-  if (x == 0 || y == 0)
-    return 0;
-
-  code = GET_CODE (x);
-  /* If X as a whole has the same code as Y, they may match.
-     If so, return 1.  */
-  if (code == GET_CODE (y))
-    {
-      if (exp_equiv_p (x, y, 0, 1))
-       return 1;
-    }
-
-  /* X does not match, so try its subexpressions.  */
-
-  fmt = GET_RTX_FORMAT (code);
-  for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
-    if (fmt[i] == 'e')
-      {
-       if (i == 0)
-         {
-           x = XEXP (x, 0);
-           goto repeat;
-         }
-       else
-         if (refers_to_p (XEXP (x, i), y))
-           return 1;
-      }
-    else if (fmt[i] == 'E')
-      {
-       int j;
-       for (j = 0; j < XVECLEN (x, i); j++)
-         if (refers_to_p (XVECEXP (x, i, j), y))
-           return 1;
-      }
-
-  return 0;
-}
-\f
-/* Given ADDR and SIZE (a memory address, and the size of the memory reference),
-   set PBASE, PSTART, and PEND which correspond to the base of the address,
-   the starting offset, and ending offset respectively.
-
-   ADDR is known to be a nonvarying address.  */
-
-/* ??? Despite what the comments say, this function is in fact frequently
-   passed varying addresses.  This does not appear to cause any problems.  */
-
-static void
-set_nonvarying_address_components (addr, size, pbase, pstart, pend)
-     rtx addr;
-     int size;
-     rtx *pbase;
-     HOST_WIDE_INT *pstart, *pend;
-{
-  rtx base;
-  HOST_WIDE_INT start, end;
-
-  base = addr;
-  start = 0;
-  end = 0;
-
-  if (flag_pic && GET_CODE (base) == PLUS
-      && XEXP (base, 0) == pic_offset_table_rtx)
-    base = XEXP (base, 1);
-
-  /* Registers with nonvarying addresses usually have constant equivalents;
-     but the frame pointer register is also possible.  */
-  if (GET_CODE (base) == REG
-      && qty_const != 0
-      && REGNO_QTY_VALID_P (REGNO (base))
-      && qty_mode[REG_QTY (REGNO (base))] == GET_MODE (base)
-      && qty_const[REG_QTY (REGNO (base))] != 0)
-    base = qty_const[REG_QTY (REGNO (base))];
-  else if (GET_CODE (base) == PLUS
-          && GET_CODE (XEXP (base, 1)) == CONST_INT
-          && GET_CODE (XEXP (base, 0)) == REG
-          && qty_const != 0
-          && REGNO_QTY_VALID_P (REGNO (XEXP (base, 0)))
-          && (qty_mode[REG_QTY (REGNO (XEXP (base, 0)))]
-              == GET_MODE (XEXP (base, 0)))
-          && qty_const[REG_QTY (REGNO (XEXP (base, 0)))])
-    {
-      start = INTVAL (XEXP (base, 1));
-      base = qty_const[REG_QTY (REGNO (XEXP (base, 0)))];
-    }
-  /* This can happen as the result of virtual register instantiation,
-     if the initial offset is too large to be a valid address.  */
-  else if (GET_CODE (base) == PLUS
-          && GET_CODE (XEXP (base, 0)) == REG
-          && GET_CODE (XEXP (base, 1)) == REG
-          && qty_const != 0
-          && REGNO_QTY_VALID_P (REGNO (XEXP (base, 0)))
-          && (qty_mode[REG_QTY (REGNO (XEXP (base, 0)))]
-              == GET_MODE (XEXP (base, 0)))
-          && qty_const[REG_QTY (REGNO (XEXP (base, 0)))]
-          && REGNO_QTY_VALID_P (REGNO (XEXP (base, 1)))
-          && (qty_mode[REG_QTY (REGNO (XEXP (base, 1)))]
-              == GET_MODE (XEXP (base, 1)))
-          && qty_const[REG_QTY (REGNO (XEXP (base, 1)))])
-    {
-      rtx tem = qty_const[REG_QTY (REGNO (XEXP (base, 1)))];
-      base = qty_const[REG_QTY (REGNO (XEXP (base, 0)))];
-
-      /* One of the two values must be a constant.  */
-      if (GET_CODE (base) != CONST_INT)
-       {
-         if (GET_CODE (tem) != CONST_INT)
-           abort ();
-         start = INTVAL (tem);
-       }
-      else
-       {
-         start = INTVAL (base);
-         base = tem;
-       }
-    }
-
-  /* Handle everything that we can find inside an address that has been
-     viewed as constant.  */
-
-  while (1)
-    {
-      /* If no part of this switch does a "continue", the code outside
-        will exit this loop.  */
-
-      switch (GET_CODE (base))
-       {
-       case LO_SUM:
-         /* By definition, operand1 of a LO_SUM is the associated constant
-            address.  Use the associated constant address as the base
-            instead.  */
-         base = XEXP (base, 1);
-         continue;
-
-       case CONST:
-         /* Strip off CONST.  */
-         base = XEXP (base, 0);
-         continue;
-
-       case PLUS:
-         if (GET_CODE (XEXP (base, 1)) == CONST_INT)
-           {
-             start += INTVAL (XEXP (base, 1));
-             base = XEXP (base, 0);
-             continue;
-           }
-         break;
-
-       case AND:
-         /* Handle the case of an AND which is the negative of a power of
-            two.  This is used to represent unaligned memory operations.  */
-         if (GET_CODE (XEXP (base, 1)) == CONST_INT
-             && exact_log2 (- INTVAL (XEXP (base, 1))) > 0)
-           {
-             set_nonvarying_address_components (XEXP (base, 0), size,
-                                                pbase, pstart, pend);
-
-             /* Assume the worst misalignment.  START is affected, but not
-                END, so compensate but adjusting SIZE.  Don't lose any
-                constant we already had.  */
-
-             size = *pend - *pstart - INTVAL (XEXP (base, 1)) - 1;
-             start += *pstart + INTVAL (XEXP (base, 1)) + 1;
-             end += *pend;
-             base = *pbase;
-           }
-         break;
-
-       default:
-         break;
-       }
-
-      break;
-    }
-
-  if (GET_CODE (base) == CONST_INT)
-    {
-      start += INTVAL (base);
-      base = const0_rtx;
-    }
-
-  end = start + size;
-
-  /* Set the return values.  */
-  *pbase = base;
-  *pstart = start;
-  *pend = end;
-}
-
 /* Return 1 if X has a value that can vary even between two
    executions of the program.  0 means X can be compared reliably
    against certain constants or near-constants.  */