From: Takayuki 'January June' Suwa Date: Tue, 16 Sep 2025 00:42:50 +0000 (+0900) Subject: xtensa: Simplify the definition of REGNO_OK_FOR_BASE_P() and avoid calling it directly X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fe7cf719a975656f395aced8b18aa10526c8a8eb;p=thirdparty%2Fgcc.git xtensa: Simplify the definition of REGNO_OK_FOR_BASE_P() and avoid calling it directly In recent gcc versions, REGNO_OK_FOR_BASE_P() is not called directly, but rather via regno_ok_for_base_p() which is a wrapper in gcc/addresses.h. The wrapper obtains a hard register number from pseudo via reg_renumber array, so REGNO_OK_FOR_BASE_P() does not need to take this into consideration. On the other hand, since there is only one use of REGNO_OK_FOR_BASE_P() in the target-specific code, it would make more sense to simplify the definition of REGNO_OK_FOR_BASE_P() and replace its call with that of regno_ok_for_base_p(). gcc/ChangeLog: * config/xtensa/xtensa.cc (#include): Add "addresses.h". * config/xtensa/xtensa.h (REGNO_OK_FOR_BASE_P): Simplify to just a call to GP_REG_P(). (BASE_REG_P): Replace REGNO_OK_FOR_BASE_P() with the equivalent call to regno_ok_for_base_p(). --- diff --git a/gcc/config/xtensa/xtensa.cc b/gcc/config/xtensa/xtensa.cc index f3b89de3693..bcb26df2e22 100644 --- a/gcc/config/xtensa/xtensa.cc +++ b/gcc/config/xtensa/xtensa.cc @@ -41,6 +41,7 @@ along with GCC; see the file COPYING3. If not see #include "diagnostic-core.h" #include "cfgrtl.h" #include "output.h" +#include "addresses.h" #include "fold-const.h" #include "stor-layout.h" #include "calls.h" diff --git a/gcc/config/xtensa/xtensa.h b/gcc/config/xtensa/xtensa.h index d49c9cd32f1..ea56f9fe993 100644 --- a/gcc/config/xtensa/xtensa.h +++ b/gcc/config/xtensa/xtensa.h @@ -583,15 +583,15 @@ typedef struct xtensa_args for use as a base or index register in operand addresses. */ #define REGNO_OK_FOR_INDEX_P(NUM) 0 -#define REGNO_OK_FOR_BASE_P(NUM) \ - (GP_REG_P (NUM) || GP_REG_P ((unsigned) reg_renumber[NUM])) +#define REGNO_OK_FOR_BASE_P(NUM) GP_REG_P (NUM) /* C expressions that are nonzero if X (assumed to be a `reg' RTX) is valid for use as a base or index register. */ #define BASE_REG_P(X, STRICT) \ ((!(STRICT) && ! HARD_REGISTER_P (X)) \ - || REGNO_OK_FOR_BASE_P (REGNO (X))) + || regno_ok_for_base_p (REGNO (X), VOIDmode, ADDR_SPACE_GENERIC, \ + UNKNOWN, UNKNOWN)) /* Maximum number of registers that can appear in a valid memory address. */ #define MAX_REGS_PER_ADDRESS 1