On Wed, May 7, 2025 at 6:18 PM Richard Earnshaw <rearn...@arm.com> wrote: > > The flattened logic of these functions and the complexity of the > numerous clauses makes it very difficult to understand what's written > in these macros. Additionally, SECONDARY_INPUT_RELOAD_CLASS was not > laid out with the correct formatting. > > Add some parenthesis and re-indent to make the logic clearer. > > No functional change. > > gcc: > * config/arm/arm.h (SECONDARY_OUTPUT_RELOAD_CLASS): Add parentheis > and re-indent. > (SECONDARY_INPUT_RELOAD_CLASS): Likewise. > --- > gcc/config/arm/arm.h | 55 +++++++++++++++++++++++--------------------- > 1 file changed, 29 insertions(+), 26 deletions(-) > > diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h > index 8472b756127..9c3a644873b 100644 > --- a/gcc/config/arm/arm.h > +++ b/gcc/config/arm/arm.h > @@ -1460,34 +1460,37 @@ extern const char *fp_sysreg_names[NB_FP_SYSREGS]; > /* Return the register class of a scratch register needed to copy IN into > or out of a register in CLASS in MODE. If it can be done directly, > NO_REGS is returned. */ > -#define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X) \ > - /* Restrict which direct reloads are allowed for VFP/iWMMXt regs. */ \ > - ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS)) \ > - ? coproc_secondary_reload_class (MODE, X, FALSE) \ > - : (TARGET_IWMMXT && (CLASS) == IWMMXT_REGS) \ > - ? coproc_secondary_reload_class (MODE, X, TRUE) \ > - : TARGET_32BIT \ > - ? (((MODE) == HImode && ! arm_arch4 && true_regnum (X) == -1) \ > - ? GENERAL_REGS : NO_REGS) \ > - : THUMB_SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)) > +#define SECONDARY_OUTPUT_RELOAD_CLASS(CLASS, MODE, X) \ > + /* Restrict which direct reloads are allowed for VFP/iWMMXt regs. */ > \ > + ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS)) \ > + ? coproc_secondary_reload_class (MODE, X, FALSE) \ > + : ((TARGET_IWMMXT && (CLASS) == IWMMXT_REGS) > \ > + ? coproc_secondary_reload_class (MODE, X, TRUE) \ > + : (TARGET_32BIT \ > + ? (((MODE) == HImode && ! arm_arch4 && true_regnum (X) == -1) \ > + ? GENERAL_REGS \ > + : NO_REGS) \ > + : THUMB_SECONDARY_OUTPUT_RELOAD_CLASS (CLASS, MODE, X)))) > > /* If we need to load shorts byte-at-a-time, then we need a scratch. */ > -#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \ > - /* Restrict which direct reloads are allowed for VFP/iWMMXt regs. */ \ > - ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS)) \ > - ? coproc_secondary_reload_class (MODE, X, FALSE) : \ > - (TARGET_IWMMXT && (CLASS) == IWMMXT_REGS) ? \ > - coproc_secondary_reload_class (MODE, X, TRUE) : \ > - (TARGET_32BIT ? \ > - (((CLASS) == IWMMXT_REGS || (CLASS) == IWMMXT_GR_REGS) \ > - && CONSTANT_P (X)) \ > - ? GENERAL_REGS : \ > - (((MODE) == HImode && ! arm_arch4 \ > - && (MEM_P (X) \ > - || ((REG_P (X) || GET_CODE (X) == SUBREG) \ > - && true_regnum (X) == -1))) \ > - ? GENERAL_REGS : NO_REGS) \ > - : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X))) > +#define SECONDARY_INPUT_RELOAD_CLASS(CLASS, MODE, X) \ > + /* Restrict which direct reloads are allowed for VFP/iWMMXt regs. */ > \ > + ((TARGET_HARD_FLOAT && IS_VFP_CLASS (CLASS)) \ > + ? coproc_secondary_reload_class (MODE, X, FALSE) \ > + : ((TARGET_IWMMXT && (CLASS) == IWMMXT_REGS) > \ > + ? coproc_secondary_reload_class (MODE, X, TRUE) \ > + : (TARGET_32BIT \ > + ? ((((CLASS) == IWMMXT_REGS || (CLASS) == IWMMXT_GR_REGS) \ > + && CONSTANT_P (X)) \ > + ? GENERAL_REGS \ > + : (((MODE) == HImode \ > + && ! arm_arch4 \ > + && (MEM_P (X) \ > + || ((REG_P (X) || GET_CODE (X) == SUBREG) \ > + && true_regnum (X) == -1))) \ > + ? GENERAL_REGS \ > + : NO_REGS)) \ > + : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)))) > > /* Return the maximum number of consecutive registers > needed to represent mode MODE in a register of class CLASS.
LGTM > -- > 2.43.0 >