Take out find_base_value change -- not needed, only the find_base_term
authorJeffrey A Law <law@cygnus.com>
Sun, 26 Oct 1997 18:39:57 +0000 (18:39 +0000)
committerJeff Law <law@gcc.gnu.org>
Sun, 26 Oct 1997 18:39:57 +0000 (11:39 -0700)
change was needed.

From-SVN: r16185

gcc/ChangeLog
gcc/alias.c

index 7fa5613a7a4e844d21503bc6b22c7285332ba45c..0cd65dc9898a0ac74fa3df8517cebb7534b9e392 100644 (file)
@@ -17,9 +17,8 @@ Sun Oct 26 09:21:40 1997  Jeffrey A Law  (law@cygnus.com)
 
        * Makefile.in (LIBGCC2_CFLAGS): Add -fexceptions.
 
-       * alias.c (find_base_value): Handle PRE_INC, PRE_DEC, POST_INC,
+       * alias.c (find_base_term): Handle PRE_INC, PRE_DEC, POST_INC,
        and POS_DEC.
-       (find_base_term): Likewise.
 
        * alias.c (true_dependence): Fix typo.
 
index ea62cd56fe2f32e3a3cbfad488bb285b6320dec5..07f98e61e91c9754c3dced22e443462f927cbdc2 100644 (file)
@@ -93,13 +93,6 @@ find_base_value (src)
     case LABEL_REF:
       return src;
 
-    case PRE_INC:
-    case PRE_DEC:
-    case POST_INC:
-    case POST_DEC:
-      src = XEXP (src, 0);
-      /* fall through */
-
     case REG:
       /* At the start of a function argument registers have known base
         values which may be lost later.  Returning an ADDRESS
@@ -107,6 +100,8 @@ find_base_value (src)
         even when the argument registers are used for other purposes.  */
       if (REGNO (src) < FIRST_PSEUDO_REGISTER && copying_arguments)
        return reg_base_value[REGNO (src)];
+      if (REG_N_SETS (REGNO (src)) == 1 && reg_base_value[REGNO (src)])
+       return reg_base_value[REGNO (src)];
       return src;
 
     case MEM:
@@ -129,7 +124,21 @@ find_base_value (src)
     case PLUS:
     case MINUS:
       {
-       rtx src_0 = XEXP (src, 0), src_1 = XEXP (src, 1);
+       rtx temp, src_0 = XEXP (src, 0), src_1 = XEXP (src, 1);
+
+       if (GET_CODE (src_0) == REG)
+         {
+           temp = find_base_value (src_0);
+           if (temp)
+             src_0 = temp;
+         }
+
+       if (GET_CODE (src_1) == REG)
+         {
+           temp = find_base_value (src_1);
+           if (temp)
+             src_1 = temp;
+         }
 
        /* Guess which operand is the base address.
 
@@ -144,6 +153,12 @@ find_base_value (src)
            || GET_CODE (src_0) == CONST)
          return find_base_value (src_0);
 
+       if (GET_CODE (src_0) == CONST_INT
+           || GET_CODE (src_1) == SYMBOL_REF
+           || GET_CODE (src_1) == LABEL_REF
+           || GET_CODE (src_1) == CONST)
+         return find_base_value (src_1);
+
        if (GET_CODE (src_0) == REG && REGNO_POINTER_FLAG (REGNO (src_0)))
          return find_base_value (src_0);