From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id 0EDEC3858408; Tue, 23 Jan 2024 07:08:56 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0EDEC3858408 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1705993736; bh=IG/ndfP04mIvYmRbC4mV9/TNQXxJzd78kP4c7843DVw=; h=From:To:Subject:Date:From; b=oprpXXcC13w1UDlwF2/w9Fx+F+qUbapmXvHX7SOthU0t+g5BiPjQDQf7gXarK8RRp wBwvDgDeG5BQI7eVECnZLFMdkgKDG2btNmJhagr9ILzhHYgDqulyoqtsoBQXiPfrjF 1P+TY5A3pMGWgdQlVe9JQS94idYkDd0mUEUrsbwM= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Richard Biener To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-8347] find_base_value part X-Act-Checkin: gcc X-Git-Author: Richard Biener X-Git-Refname: refs/heads/master X-Git-Oldrev: a98d5130a6dcff2ed4db371e500550134777b8cf X-Git-Newrev: 23ebb09ed2e88c1f292d4232c1fd2974cc5c79e6 Message-Id: <20240123070856.0EDEC3858408@sourceware.org> Date: Tue, 23 Jan 2024 07:08:56 +0000 (GMT) List-Id: https://gcc.gnu.org/g:23ebb09ed2e88c1f292d4232c1fd2974cc5c79e6 commit r14-8347-g23ebb09ed2e88c1f292d4232c1fd2974cc5c79e6 Author: Richard Biener Date: Mon Jan 15 13:09:48 2024 +0100 find_base_value part 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. Diff: --- gcc/alias.cc | 62 ++++-------------------------------------------------------- 1 file changed, 4 insertions(+), 58 deletions(-) diff --git a/gcc/alias.cc b/gcc/alias.cc index 6fad4b29d31..808e2095d9b 100644 --- a/gcc/alias.cc +++ b/gcc/alias.cc @@ -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;