bfin-protos.h (push_multiple_operation): Delete.

gcc/
	* config/bfin/bfin-protos.h (push_multiple_operation): Delete.
	(pop_multiple_operation): Delete.
	(analyze_push_multiple_operation): Declare.
	(analyze_pop_multiple_operation): Declare.
	* config/bfin/bfin.c (push_multiple_operation): Rename to...
	(analyze_push_multiple_operation): ...this and remove mode argument.
	(pop_multiple_operation): Rename to...
	(analyze_pop_multiple_operation): ...this and remove mode argument.
	* config/bfin/predicates.md (push_multiple_operation): Define.
	(pop_multiple_operation): Likewise.

From-SVN: r205301
This commit is contained in:
Richard Sandiford 2013-11-23 09:06:42 +00:00 committed by Richard Sandiford
parent 4615f96c2d
commit c51392f186
4 changed files with 29 additions and 8 deletions

View File

@ -1,3 +1,16 @@
2013-11-23 Richard Sandiford <rdsandiford@googlemail.com>
* config/bfin/bfin-protos.h (push_multiple_operation): Delete.
(pop_multiple_operation): Delete.
(analyze_push_multiple_operation): Declare.
(analyze_pop_multiple_operation): Declare.
* config/bfin/bfin.c (push_multiple_operation): Rename to...
(analyze_push_multiple_operation): ...this and remove mode argument.
(pop_multiple_operation): Rename to...
(analyze_pop_multiple_operation): ...this and remove mode argument.
* config/bfin/predicates.md (push_multiple_operation): Define.
(pop_multiple_operation): Likewise.
2013-11-23 Alan Modra <amodra@gmail.com>
* config/rs6000/vsx.md (fusion peepholes): Disable when !TARGET_VSX.

View File

@ -105,8 +105,8 @@ extern rtx bfin_va_arg (tree, tree);
extern void bfin_expand_prologue (void);
extern void bfin_expand_epilogue (int, int, bool);
extern int push_multiple_operation (rtx, enum machine_mode);
extern int pop_multiple_operation (rtx, enum machine_mode);
extern int analyze_push_multiple_operation (rtx);
extern int analyze_pop_multiple_operation (rtx);
extern void output_push_multiple (rtx, rtx *);
extern void output_pop_multiple (rtx, rtx *);
extern int bfin_hard_regno_rename_ok (unsigned int, unsigned int);

View File

@ -2992,7 +2992,7 @@ static int first_preg_to_save, first_dreg_to_save;
static int n_regs_to_save;
int
push_multiple_operation (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
analyze_push_multiple_operation (rtx op)
{
int lastdreg = 8, lastpreg = 6;
int i, group;
@ -3063,7 +3063,7 @@ push_multiple_operation (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
}
int
pop_multiple_operation (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
analyze_pop_multiple_operation (rtx op)
{
int lastdreg = 8, lastpreg = 6;
int i, group;
@ -3132,7 +3132,7 @@ output_push_multiple (rtx insn, rtx *operands)
int ok;
/* Validate the insn again, and compute first_[dp]reg_to_save. */
ok = push_multiple_operation (PATTERN (insn), VOIDmode);
ok = analyze_push_multiple_operation (PATTERN (insn));
gcc_assert (ok);
if (first_dreg_to_save == 8)
@ -3156,7 +3156,7 @@ output_pop_multiple (rtx insn, rtx *operands)
int ok;
/* Validate the insn again, and compute first_[dp]reg_to_save. */
ok = pop_multiple_operation (PATTERN (insn), VOIDmode);
ok = analyze_pop_multiple_operation (PATTERN (insn));
gcc_assert (ok);
if (first_dreg_to_save == 8)
@ -4136,8 +4136,8 @@ workaround_rts_anomaly (void)
if (GET_CODE (pat) == PARALLEL)
{
if (push_multiple_operation (pat, VOIDmode)
|| pop_multiple_operation (pat, VOIDmode))
if (analyze_push_multiple_operation (pat)
|| analyze_pop_multiple_operation (pat))
this_cycles = n_regs_to_save;
}
else

View File

@ -239,3 +239,11 @@
gcc_assert (REG_P (op));
return IREG_P (op);
})
(define_predicate "push_multiple_operation"
(and (match_code "parallel")
(match_test "analyze_push_multiple_operation (op)")))
(define_predicate "pop_multiple_operation"
(and (match_code "parallel")
(match_test "analyze_pop_multiple_operation (op)")))