]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
find_base_value part
authorRichard Biener <rguenther@suse.de>
Mon, 15 Jan 2024 12:09:48 +0000 (13:09 +0100)
committerRichard Biener <rguenther@suse.de>
Tue, 23 Jan 2024 07:08:27 +0000 (08:08 +0100)
The following adjusts find_base_value similar as to what
find_base_term was adjusted for PR113255.

* alias.cc (known_base_value_p): Remove.
(find_base_value): Remove PLUS/MINUS handling
when both operands are not CONST_INT_P.

gcc/alias.cc

index 6fad4b29d318f416e62e02a37110ded69c1e76ab..808e2095d9b482c5996d77eabbc15d7e26464e4b 100644 (file)
@@ -1400,26 +1400,6 @@ unique_base_value_p (rtx x)
   return GET_CODE (x) == ADDRESS && GET_MODE (x) == Pmode;
 }
 
-/* Return true if X is known to be a base value.  */
-
-static bool
-known_base_value_p (rtx x)
-{
-  switch (GET_CODE (x))
-    {
-    case LABEL_REF:
-    case SYMBOL_REF:
-      return true;
-
-    case ADDRESS:
-      /* Arguments may or may not be bases; we don't know for sure.  */
-      return GET_MODE (x) != VOIDmode;
-
-    default:
-      return false;
-    }
-}
-
 /* Inside SRC, the source of a SET, find a base address.  */
 
 static rtx
@@ -1490,46 +1470,12 @@ find_base_value (rtx src)
     case PLUS:
     case MINUS:
       {
-       rtx temp, src_0 = XEXP (src, 0), src_1 = XEXP (src, 1);
-
-       /* If either operand is a REG that is a known pointer, then it
-          is the base.  */
-       if (REG_P (src_0) && REG_POINTER (src_0))
-         return find_base_value (src_0);
-       if (REG_P (src_1) && REG_POINTER (src_1))
-         return find_base_value (src_1);
-
-       /* If either operand is a REG, then see if we already have
-          a known value for it.  */
-       if (REG_P (src_0))
-         {
-           temp = find_base_value (src_0);
-           if (temp != 0)
-             src_0 = temp;
-         }
-
-       if (REG_P (src_1))
-         {
-           temp = find_base_value (src_1);
-           if (temp!= 0)
-             src_1 = temp;
-         }
-
-       /* If either base is named object or a special address
-          (like an argument or stack reference), then use it for the
-          base term.  */
-       if (src_0 != 0 && known_base_value_p (src_0))
-         return src_0;
-
-       if (src_1 != 0 && known_base_value_p (src_1))
-         return src_1;
+       rtx src_0 = XEXP (src, 0), src_1 = XEXP (src, 1);
 
-       /* Guess which operand is the base address:
-          If either operand is a symbol, then it is the base.  If
-          either operand is a CONST_INT, then the other is the base.  */
-       if (CONST_INT_P (src_1) || CONSTANT_P (src_0))
+       /* If either operand is a CONST_INT, then the other is the base.  */
+       if (CONST_INT_P (src_1))
          return find_base_value (src_0);
-       else if (CONST_INT_P (src_0) || CONSTANT_P (src_1))
+       else if (CONST_INT_P (src_0))
          return find_base_value (src_1);
 
        return 0;