From 9d93cc2467714741425e6d78e7b6e147b7992483 Mon Sep 17 00:00:00 2001 From: Chung-Ju Wu Date: Wed, 3 Sep 2014 09:16:51 +0000 Subject: [PATCH] [NDS32] Define and rename some GPR-specific stuff. * config/nds32/nds32.c (nds32_function_arg): Define and rename some GPR-specific stuff. (nds32_function_arg_advance): Likewise. (nds32_init_cumulative_args): Likewise. * config/nds32/nds32.h (NDS32_MAX_GPR_REGS_FOR_ARGS): Define. (NDS32_FIRST_GPR_REGNUM): Define. (NDS32_LAST_GPR_REGNUM): Define. (NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG): Define. (NDS32_ARG_PASS_IN_REG_P): Use NDS32_MAX_GPR_REGS_FOR_ARGS. (FUNCTION_ARG_REGNO_P): Use NDS32_MAX_GPR_REGS_FOR_ARGS. (machine_function): Use GRP-specific stuff. From-SVN: r214859 --- gcc/ChangeLog | 14 ++++++++++++++ gcc/config/nds32/nds32.c | 10 +++++----- gcc/config/nds32/nds32.h | 24 ++++++++++++++---------- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 22d24ef..db52c61 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,19 @@ 2014-09-03 Chung-Ju Wu + * config/nds32/nds32.c (nds32_function_arg): Define and rename some + GPR-specific stuff. + (nds32_function_arg_advance): Likewise. + (nds32_init_cumulative_args): Likewise. + * config/nds32/nds32.h (NDS32_MAX_GPR_REGS_FOR_ARGS): Define. + (NDS32_FIRST_GPR_REGNUM): Define. + (NDS32_LAST_GPR_REGNUM): Define. + (NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG): Define. + (NDS32_ARG_PASS_IN_REG_P): Use NDS32_MAX_GPR_REGS_FOR_ARGS. + (FUNCTION_ARG_REGNO_P): Use NDS32_MAX_GPR_REGS_FOR_ARGS. + (machine_function): Use GRP-specific stuff. + +2014-09-03 Chung-Ju Wu + * config/nds32/nds32.c (nds32_expand_prologue): Remove unused variables. (nds32_expand_epilogue): Likewise. (nds32_expand_prologue_v3push): Likewise. diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c index 1bb8c4c..54abc96 100644 --- a/gcc/config/nds32/nds32.c +++ b/gcc/config/nds32/nds32.c @@ -1294,12 +1294,12 @@ nds32_function_arg (cumulative_args_t ca, enum machine_mode mode, return NULL_RTX; /* If there are still registers available, return it. */ - if (NDS32_ARG_PASS_IN_REG_P (cum->reg_offset, mode, type)) + if (NDS32_ARG_PASS_IN_REG_P (cum->gpr_offset, mode, type)) { /* Pick up the next available register number. */ unsigned int regno; - regno = NDS32_AVAILABLE_REGNUM_FOR_ARG (cum->reg_offset, mode, type); + regno = NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG (cum->gpr_offset, mode, type); return gen_rtx_REG (mode, regno); } else @@ -1320,8 +1320,8 @@ nds32_function_arg_advance (cumulative_args_t ca, enum machine_mode mode, Only named argument could be advanced. */ if (named) { - cum->reg_offset - = NDS32_AVAILABLE_REGNUM_FOR_ARG (cum->reg_offset, mode, type) + cum->gpr_offset + = NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG (cum->gpr_offset, mode, type) - NDS32_GPR_ARG_FIRST_REGNUM + NDS32_NEED_N_REGS_FOR_ARG (mode, type); } @@ -2656,7 +2656,7 @@ nds32_init_cumulative_args (CUMULATIVE_ARGS *cum, /* Initial available registers (in offset, corresponding to NDS32_GPR_ARG_FIRST_REGNUM) for passing arguments. */ - cum->reg_offset = 0; + cum->gpr_offset = 0; } /* -- Function Entry and Exit. */ diff --git a/gcc/config/nds32/nds32.h b/gcc/config/nds32/nds32.h index d0b8142..c446041 100644 --- a/gcc/config/nds32/nds32.h +++ b/gcc/config/nds32/nds32.h @@ -109,7 +109,7 @@ enum nds32_16bit_address_type /* ------------------------------------------------------------------------ */ /* Define maximum numbers of registers for passing arguments. */ -#define NDS32_MAX_REGS_FOR_ARGS 6 +#define NDS32_MAX_GPR_REGS_FOR_ARGS 6 /* Define the register number for first argument. */ #define NDS32_GPR_ARG_FIRST_REGNUM 0 @@ -117,6 +117,10 @@ enum nds32_16bit_address_type /* Define the register number for return value. */ #define NDS32_GPR_RET_FIRST_REGNUM 0 +/* Define the first integer register number. */ +#define NDS32_FIRST_GPR_REGNUM 0 +/* Define the last integer register number. */ +#define NDS32_LAST_GPR_REGNUM 31 /* Define double word alignment bits. */ #define NDS32_DOUBLE_WORD_ALIGNMENT 64 @@ -154,19 +158,19 @@ enum nds32_16bit_address_type b) Otherwise, the register number can be odd or even value. 2. If it is required ONLY one register, the register number can be odd or even value. */ -#define NDS32_AVAILABLE_REGNUM_FOR_ARG(reg_offset, mode, type) \ - ((NDS32_NEED_N_REGS_FOR_ARG (mode, type) > 1) \ - ? ((NDS32_MODE_TYPE_ALIGN (mode, type) > PARM_BOUNDARY) \ - ? (((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM + 1) & ~1) \ - : ((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM)) \ +#define NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG(reg_offset, mode, type) \ + ((NDS32_NEED_N_REGS_FOR_ARG (mode, type) > 1) \ + ? ((NDS32_MODE_TYPE_ALIGN (mode, type) > PARM_BOUNDARY) \ + ? (((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM + 1) & ~1) \ + : ((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM)) \ : ((reg_offset) + NDS32_GPR_ARG_FIRST_REGNUM)) /* This macro is to check if there are still available registers for passing argument. */ #define NDS32_ARG_PASS_IN_REG_P(reg_offset, mode, type) \ - (((reg_offset) < NDS32_MAX_REGS_FOR_ARGS) \ + (((reg_offset) < NDS32_MAX_GPR_REGS_FOR_ARGS) \ && ((reg_offset) + NDS32_NEED_N_REGS_FOR_ARG (mode, type) \ - <= NDS32_MAX_REGS_FOR_ARGS)) + <= NDS32_MAX_GPR_REGS_FOR_ARGS)) /* This macro is to check if the register is required to be saved on stack. If call_used_regs[regno] == 0, regno is the callee-saved register. @@ -227,7 +231,7 @@ struct GTY(()) machine_function /* A C structure that contains the arguments information. */ typedef struct { - unsigned int reg_offset; + unsigned int gpr_offset; } nds32_cumulative_args; /* ------------------------------------------------------------------------ */ @@ -710,7 +714,7 @@ enum reg_class 'comparison of unsigned expression >= 0 is always true' warning. */ #define FUNCTION_ARG_REGNO_P(regno) \ (((int) regno - NDS32_GPR_ARG_FIRST_REGNUM >= 0) \ - && ((int) regno - NDS32_GPR_ARG_FIRST_REGNUM < NDS32_MAX_REGS_FOR_ARGS)) + && ((int) regno - NDS32_GPR_ARG_FIRST_REGNUM < NDS32_MAX_GPR_REGS_FOR_ARGS)) #define DEFAULT_PCC_STRUCT_RETURN 0 -- 2.7.4