[NDS32] Rename some variables so that we can clearly identify they represent general purpose registers.
gcc/ * config/nds32/nds32.h (callee_saved_regs_size): Rename to ... (callee_saved_gpr_regs_size): ... this. (callee_saved_regs_first_regno): Rename to ... (callee_saved_first_gpr_regno): ... this. (callee_saved_regs_last_regno) Rename to ... (callee_saved_last_gpr_regno): ... this. * config/nds32/nds32.c (nds32_compute_stack_frame): Adjust renamed variables. (nds32_initial_elimination_offset): Likewise. (nds32_expand_prologue): Likewise. (nds32_expand_epilogue): Likewise. (nds32_expand_prologue_v3push): Likewise. (nds32_expand_epilogue_v3pop): Likewise. * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Adjust renamed variables. (nds32_output_stack_pop): Likewise. From-SVN: r221306
This commit is contained in:
parent
6cf6683f55
commit
c457f75178
4 changed files with 83 additions and 62 deletions
|
@ -1,3 +1,22 @@
|
|||
2015-03-10 Chung-Ju Wu <jasonwucj@gmail.com>
|
||||
|
||||
* config/nds32/nds32.h (callee_saved_regs_size): Rename to ...
|
||||
(callee_saved_gpr_regs_size): ... this.
|
||||
(callee_saved_regs_first_regno): Rename to ...
|
||||
(callee_saved_first_gpr_regno): ... this.
|
||||
(callee_saved_regs_last_regno) Rename to ...
|
||||
(callee_saved_last_gpr_regno): ... this.
|
||||
* config/nds32/nds32.c (nds32_compute_stack_frame): Adjust renamed
|
||||
variables.
|
||||
(nds32_initial_elimination_offset): Likewise.
|
||||
(nds32_expand_prologue): Likewise.
|
||||
(nds32_expand_epilogue): Likewise.
|
||||
(nds32_expand_prologue_v3push): Likewise.
|
||||
(nds32_expand_epilogue_v3pop): Likewise.
|
||||
* config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push):
|
||||
Adjust renamed variables.
|
||||
(nds32_output_stack_pop): Likewise.
|
||||
|
||||
2015-03-10 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
||||
|
||||
* dominance.c (nearest_common_dominator_for_set): Fix A_Dominated_by_B
|
||||
|
|
|
@ -604,8 +604,8 @@ nds32_output_stack_push (rtx par_rtx)
|
|||
+ NDS32_MAX_GPR_REGS_FOR_ARGS
|
||||
- 1;
|
||||
/* Pick up callee-saved first regno and last regno for further use. */
|
||||
int rb_callee_saved = cfun->machine->callee_saved_regs_first_regno;
|
||||
int re_callee_saved = cfun->machine->callee_saved_regs_last_regno;
|
||||
int rb_callee_saved = cfun->machine->callee_saved_first_gpr_regno;
|
||||
int re_callee_saved = cfun->machine->callee_saved_last_gpr_regno;
|
||||
|
||||
/* First we need to check if we are pushing argument registers not used
|
||||
for the named arguments. If so, we have to create 'smw.adm' (push.s)
|
||||
|
@ -644,7 +644,7 @@ nds32_output_stack_push (rtx par_rtx)
|
|||
otherwise, generate 'push25 Re,0'. */
|
||||
sp_adjust = cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes;
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes;
|
||||
if (satisfies_constraint_Iu08 (GEN_INT (sp_adjust))
|
||||
&& NDS32_DOUBLE_WORD_ALIGN_P (sp_adjust))
|
||||
operands[1] = GEN_INT (sp_adjust);
|
||||
|
@ -712,8 +712,8 @@ nds32_output_stack_pop (rtx par_rtx ATTRIBUTE_UNUSED)
|
|||
/* The operands array which will be used in output_asm_insn(). */
|
||||
rtx operands[3];
|
||||
/* Pick up callee-saved first regno and last regno for further use. */
|
||||
int rb_callee_saved = cfun->machine->callee_saved_regs_first_regno;
|
||||
int re_callee_saved = cfun->machine->callee_saved_regs_last_regno;
|
||||
int rb_callee_saved = cfun->machine->callee_saved_first_gpr_regno;
|
||||
int re_callee_saved = cfun->machine->callee_saved_last_gpr_regno;
|
||||
|
||||
/* If we step here, we are going to do v3pop or multiple pop operation. */
|
||||
|
||||
|
@ -742,7 +742,7 @@ nds32_output_stack_pop (rtx par_rtx ATTRIBUTE_UNUSED)
|
|||
and then use 'pop25 Re,0'. */
|
||||
sp_adjust = cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes;
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes;
|
||||
if (satisfies_constraint_Iu08 (GEN_INT (sp_adjust))
|
||||
&& NDS32_DOUBLE_WORD_ALIGN_P (sp_adjust)
|
||||
&& !cfun->calls_alloca)
|
||||
|
|
|
@ -224,12 +224,12 @@ nds32_compute_stack_frame (void)
|
|||
cfun->machine->lp_size = (df_regs_ever_live_p (LP_REGNUM)) ? 4 : 0;
|
||||
|
||||
/* Initially there is no padding bytes. */
|
||||
cfun->machine->callee_saved_area_padding_bytes = 0;
|
||||
cfun->machine->callee_saved_area_gpr_padding_bytes = 0;
|
||||
|
||||
/* Calculate the bytes of saving callee-saved registers on stack. */
|
||||
cfun->machine->callee_saved_regs_size = 0;
|
||||
cfun->machine->callee_saved_regs_first_regno = SP_REGNUM;
|
||||
cfun->machine->callee_saved_regs_last_regno = SP_REGNUM;
|
||||
cfun->machine->callee_saved_gpr_regs_size = 0;
|
||||
cfun->machine->callee_saved_first_gpr_regno = SP_REGNUM;
|
||||
cfun->machine->callee_saved_last_gpr_regno = SP_REGNUM;
|
||||
/* Currently, there is no need to check $r28~$r31
|
||||
because we will save them in another way. */
|
||||
for (r = 0; r < 28; r++)
|
||||
|
@ -240,10 +240,10 @@ nds32_compute_stack_frame (void)
|
|||
(only need to set it once).
|
||||
If first regno == SP_REGNUM, we can tell that
|
||||
it is the first time to be here. */
|
||||
if (cfun->machine->callee_saved_regs_first_regno == SP_REGNUM)
|
||||
cfun->machine->callee_saved_regs_first_regno = r;
|
||||
if (cfun->machine->callee_saved_first_gpr_regno == SP_REGNUM)
|
||||
cfun->machine->callee_saved_first_gpr_regno = r;
|
||||
/* Mark the last required callee-saved register. */
|
||||
cfun->machine->callee_saved_regs_last_regno = r;
|
||||
cfun->machine->callee_saved_last_gpr_regno = r;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,8 +262,8 @@ nds32_compute_stack_frame (void)
|
|||
condition 3: There is no local_size, which means
|
||||
we do not need to adjust $sp. */
|
||||
if (lookup_attribute ("naked", DECL_ATTRIBUTES (current_function_decl))
|
||||
|| (cfun->machine->callee_saved_regs_first_regno == SP_REGNUM
|
||||
&& cfun->machine->callee_saved_regs_last_regno == SP_REGNUM
|
||||
|| (cfun->machine->callee_saved_first_gpr_regno == SP_REGNUM
|
||||
&& cfun->machine->callee_saved_last_gpr_regno == SP_REGNUM
|
||||
&& !df_regs_ever_live_p (FP_REGNUM)
|
||||
&& !df_regs_ever_live_p (LP_REGNUM)
|
||||
&& cfun->machine->local_size == 0))
|
||||
|
@ -315,33 +315,33 @@ nds32_compute_stack_frame (void)
|
|||
cfun->machine->lp_size = 4;
|
||||
|
||||
/* Remember to set Rb = $r6. */
|
||||
cfun->machine->callee_saved_regs_first_regno = 6;
|
||||
cfun->machine->callee_saved_first_gpr_regno = 6;
|
||||
|
||||
if (cfun->machine->callee_saved_regs_last_regno <= 6)
|
||||
if (cfun->machine->callee_saved_last_gpr_regno <= 6)
|
||||
{
|
||||
/* Re = $r6 */
|
||||
cfun->machine->callee_saved_regs_last_regno = 6;
|
||||
cfun->machine->callee_saved_last_gpr_regno = 6;
|
||||
}
|
||||
else if (cfun->machine->callee_saved_regs_last_regno <= 8)
|
||||
else if (cfun->machine->callee_saved_last_gpr_regno <= 8)
|
||||
{
|
||||
/* Re = $r8 */
|
||||
cfun->machine->callee_saved_regs_last_regno = 8;
|
||||
cfun->machine->callee_saved_last_gpr_regno = 8;
|
||||
}
|
||||
else if (cfun->machine->callee_saved_regs_last_regno <= 10)
|
||||
else if (cfun->machine->callee_saved_last_gpr_regno <= 10)
|
||||
{
|
||||
/* Re = $r10 */
|
||||
cfun->machine->callee_saved_regs_last_regno = 10;
|
||||
cfun->machine->callee_saved_last_gpr_regno = 10;
|
||||
}
|
||||
else if (cfun->machine->callee_saved_regs_last_regno <= 14)
|
||||
else if (cfun->machine->callee_saved_last_gpr_regno <= 14)
|
||||
{
|
||||
/* Re = $r14 */
|
||||
cfun->machine->callee_saved_regs_last_regno = 14;
|
||||
cfun->machine->callee_saved_last_gpr_regno = 14;
|
||||
}
|
||||
else if (cfun->machine->callee_saved_regs_last_regno == SP_REGNUM)
|
||||
else if (cfun->machine->callee_saved_last_gpr_regno == SP_REGNUM)
|
||||
{
|
||||
/* If last_regno is SP_REGNUM, which means
|
||||
it is never changed, so set it to Re = $r6. */
|
||||
cfun->machine->callee_saved_regs_last_regno = 6;
|
||||
cfun->machine->callee_saved_last_gpr_regno = 6;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -355,12 +355,12 @@ nds32_compute_stack_frame (void)
|
|||
Initially, the callee_saved_regs_size is supposed to be 0.
|
||||
As long as callee_saved_regs_last_regno is not SP_REGNUM,
|
||||
we can update callee_saved_regs_size with new size. */
|
||||
if (cfun->machine->callee_saved_regs_last_regno != SP_REGNUM)
|
||||
if (cfun->machine->callee_saved_last_gpr_regno != SP_REGNUM)
|
||||
{
|
||||
/* Compute pushed size of callee-saved registers. */
|
||||
cfun->machine->callee_saved_regs_size
|
||||
= 4 * (cfun->machine->callee_saved_regs_last_regno
|
||||
- cfun->machine->callee_saved_regs_first_regno
|
||||
cfun->machine->callee_saved_gpr_regs_size
|
||||
= 4 * (cfun->machine->callee_saved_last_gpr_regno
|
||||
- cfun->machine->callee_saved_first_gpr_regno
|
||||
+ 1);
|
||||
}
|
||||
|
||||
|
@ -371,10 +371,10 @@ nds32_compute_stack_frame (void)
|
|||
block_size = cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size;
|
||||
+ cfun->machine->callee_saved_gpr_regs_size;
|
||||
if (!NDS32_DOUBLE_WORD_ALIGN_P (block_size))
|
||||
{
|
||||
cfun->machine->callee_saved_area_padding_bytes
|
||||
cfun->machine->callee_saved_area_gpr_padding_bytes
|
||||
= NDS32_ROUND_UP_DOUBLE_WORD (block_size) - block_size;
|
||||
}
|
||||
|
||||
|
@ -2866,8 +2866,8 @@ nds32_initial_elimination_offset (unsigned int from_reg, unsigned int to_reg)
|
|||
offset = (cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes
|
||||
+ cfun->machine->callee_saved_gpr_regs_size
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes
|
||||
+ cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size);
|
||||
}
|
||||
|
@ -2887,8 +2887,8 @@ nds32_initial_elimination_offset (unsigned int from_reg, unsigned int to_reg)
|
|||
offset = (-1) * (cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes);
|
||||
+ cfun->machine->callee_saved_gpr_regs_size
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2965,8 +2965,8 @@ nds32_expand_prologue (void)
|
|||
return;
|
||||
|
||||
/* Get callee_first_regno and callee_last_regno. */
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_first_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_last_regno);
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_first_gpr_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_last_gpr_regno);
|
||||
|
||||
/* nds32_emit_stack_push_multiple(first_regno, last_regno),
|
||||
the pattern 'stack_push_multiple' is implemented in nds32.md.
|
||||
|
@ -3002,7 +3002,7 @@ nds32_expand_prologue (void)
|
|||
fp_adjust = cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size;
|
||||
+ cfun->machine->callee_saved_gpr_regs_size;
|
||||
fp_adjust_insn = gen_addsi3 (hard_frame_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
GEN_INT (fp_adjust));
|
||||
|
@ -3017,7 +3017,7 @@ nds32_expand_prologue (void)
|
|||
- callee_saved_area_padding_bytes. */
|
||||
sp_adjust = cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes;
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes;
|
||||
/* sp_adjust value may be out of range of the addi instruction,
|
||||
create alternative add behavior with TA_REGNUM if necessary,
|
||||
using NEGATIVE value to tell that we are decreasing address. */
|
||||
|
@ -3105,7 +3105,7 @@ nds32_expand_epilogue (bool sibcall_p)
|
|||
sp_adjust = cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size;
|
||||
+ cfun->machine->callee_saved_gpr_regs_size;
|
||||
sp_adjust_insn = gen_addsi3 (stack_pointer_rtx,
|
||||
hard_frame_pointer_rtx,
|
||||
GEN_INT (-1 * sp_adjust));
|
||||
|
@ -3128,7 +3128,7 @@ nds32_expand_epilogue (bool sibcall_p)
|
|||
+ callee_saved_area_padding_bytes. */
|
||||
sp_adjust = cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes;
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes;
|
||||
/* sp_adjust value may be out of range of the addi instruction,
|
||||
create alternative add behavior with TA_REGNUM if necessary,
|
||||
using POSITIVE value to tell that we are increasing address. */
|
||||
|
@ -3149,8 +3149,8 @@ nds32_expand_epilogue (bool sibcall_p)
|
|||
}
|
||||
|
||||
/* Get callee_first_regno and callee_last_regno. */
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_first_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_last_regno);
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_first_gpr_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_last_gpr_regno);
|
||||
|
||||
/* nds32_emit_stack_pop_multiple(first_regno, last_regno),
|
||||
the pattern 'stack_pop_multiple' is implementad in nds32.md.
|
||||
|
@ -3219,14 +3219,14 @@ nds32_expand_prologue_v3push (void)
|
|||
return;
|
||||
|
||||
/* Get callee_first_regno and callee_last_regno. */
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_first_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_last_regno);
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_first_gpr_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_last_gpr_regno);
|
||||
|
||||
/* Calculate sp_adjust first to test if 'push25 Re,imm8u' is available,
|
||||
where imm8u has to be 8-byte alignment. */
|
||||
sp_adjust = cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes;
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes;
|
||||
|
||||
if (satisfies_constraint_Iu08 (GEN_INT (sp_adjust))
|
||||
&& NDS32_DOUBLE_WORD_ALIGN_P (sp_adjust))
|
||||
|
@ -3256,7 +3256,7 @@ nds32_expand_prologue_v3push (void)
|
|||
fp_adjust = cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size
|
||||
+ cfun->machine->callee_saved_gpr_regs_size
|
||||
+ sp_adjust;
|
||||
fp_adjust_insn = gen_addsi3 (hard_frame_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
|
@ -3291,7 +3291,7 @@ nds32_expand_prologue_v3push (void)
|
|||
fp_adjust = cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size;
|
||||
+ cfun->machine->callee_saved_gpr_regs_size;
|
||||
fp_adjust_insn = gen_addsi3 (hard_frame_pointer_rtx,
|
||||
stack_pointer_rtx,
|
||||
GEN_INT (fp_adjust));
|
||||
|
@ -3356,14 +3356,14 @@ nds32_expand_epilogue_v3pop (bool sibcall_p)
|
|||
}
|
||||
|
||||
/* Get callee_first_regno and callee_last_regno. */
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_first_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_regs_last_regno);
|
||||
Rb = gen_rtx_REG (SImode, cfun->machine->callee_saved_first_gpr_regno);
|
||||
Re = gen_rtx_REG (SImode, cfun->machine->callee_saved_last_gpr_regno);
|
||||
|
||||
/* Calculate sp_adjust first to test if 'pop25 Re,imm8u' is available,
|
||||
where imm8u has to be 8-byte alignment. */
|
||||
sp_adjust = cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes;
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes;
|
||||
|
||||
/* We have to consider alloca issue as well.
|
||||
If the function does call alloca(), the stack pointer is not fixed.
|
||||
|
@ -3402,7 +3402,7 @@ nds32_expand_epilogue_v3pop (bool sibcall_p)
|
|||
sp_adjust = cfun->machine->fp_size
|
||||
+ cfun->machine->gp_size
|
||||
+ cfun->machine->lp_size
|
||||
+ cfun->machine->callee_saved_regs_size;
|
||||
+ cfun->machine->callee_saved_gpr_regs_size;
|
||||
sp_adjust_insn = gen_addsi3 (stack_pointer_rtx,
|
||||
hard_frame_pointer_rtx,
|
||||
GEN_INT (-1 * sp_adjust));
|
||||
|
@ -3422,7 +3422,7 @@ nds32_expand_epilogue_v3pop (bool sibcall_p)
|
|||
+ callee_saved_area_padding_bytes. */
|
||||
sp_adjust = cfun->machine->local_size
|
||||
+ cfun->machine->out_args_size
|
||||
+ cfun->machine->callee_saved_area_padding_bytes;
|
||||
+ cfun->machine->callee_saved_area_gpr_padding_bytes;
|
||||
/* sp_adjust value may be out of range of the addi instruction,
|
||||
create alternative add behavior with TA_REGNUM if necessary,
|
||||
using POSITIVE value to tell that we are increasing address. */
|
||||
|
|
|
@ -218,15 +218,17 @@ struct GTY(()) machine_function
|
|||
/* Number of bytes on the stack for saving $lp. */
|
||||
int lp_size;
|
||||
|
||||
/* Number of bytes on the stack for saving callee-saved registers. */
|
||||
int callee_saved_regs_size;
|
||||
/* The padding bytes in callee-saved area may be required. */
|
||||
int callee_saved_area_padding_bytes;
|
||||
/* Number of bytes on the stack for saving general purpose
|
||||
callee-saved registers. */
|
||||
int callee_saved_gpr_regs_size;
|
||||
|
||||
/* The first required callee-saved register. */
|
||||
int callee_saved_regs_first_regno;
|
||||
/* The last required callee-saved register. */
|
||||
int callee_saved_regs_last_regno;
|
||||
/* The padding bytes in callee-saved area may be required. */
|
||||
int callee_saved_area_gpr_padding_bytes;
|
||||
|
||||
/* The first required general purpose callee-saved register. */
|
||||
int callee_saved_first_gpr_regno;
|
||||
/* The last required general purpose callee-saved register. */
|
||||
int callee_saved_last_gpr_regno;
|
||||
|
||||
/* The padding bytes in varargs area may be required. */
|
||||
int va_args_area_padding_bytes;
|
||||
|
|
Loading…
Add table
Reference in a new issue