This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[bfin] Avoid genrecog warning
- From: Richard Sandiford <rdsandiford at googlemail dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: bernds at codesourcery dot com, jzhang918 at gmail dot com
- Date: Fri, 22 Nov 2013 08:15:41 +0000
- Subject: [bfin] Avoid genrecog warning
- Authentication-results: sourceware.org; auth=none
I have a patch to upgrade most genrecog warnings into errors. This patch
fixes one for bfin about {push,pop}_multiple_operation not being defined
at the .md level.
Tested by building bfin-elf with the warnings turned to errors, and by
comparing the before and after assembly output at -O2 for gcc.c-torture,
gcc.dg and g++.dg. OK to install?
Thanks,
Richard
gcc/
* config/bfin/bfin-protos.h (push_multiple_operation): Delete.
(pop_multiple_operation): Delete.
(push_multiple_operation_p, pop_multiple_operation_p): Declare.
* config/bfin/bfin.c (push_multiple_operation): Rename to...
(push_multiple_operation_p): ...this and remove mode argument.
(pop_multiple_operation): Rename to...
(pop_multiple_operation_p): ...this and remove mode argument.
* config/bfin/predicates.md (push_multiple_operation): Define.
(pop_multiple_operation): Likewise.
Index: gcc/config/bfin/bfin-protos.h
===================================================================
--- gcc/config/bfin/bfin-protos.h 2013-11-16 21:52:15.083787117 +0000
+++ gcc/config/bfin/bfin-protos.h 2013-11-16 21:58:55.616017138 +0000
@@ -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 push_multiple_operation_p (rtx);
+extern int pop_multiple_operation_p (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);
Index: gcc/config/bfin/bfin.c
===================================================================
--- gcc/config/bfin/bfin.c 2013-11-16 21:52:15.083787117 +0000
+++ gcc/config/bfin/bfin.c 2013-11-16 21:58:55.616017138 +0000
@@ -2990,7 +2990,7 @@ bfin_rtx_costs (rtx x, int code_i, int o
static int n_regs_to_save;
int
-push_multiple_operation (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
+push_multiple_operation_p (rtx op)
{
int lastdreg = 8, lastpreg = 6;
int i, group;
@@ -3061,7 +3061,7 @@ push_multiple_operation (rtx op, enum ma
}
int
-pop_multiple_operation (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
+pop_multiple_operation_p (rtx op)
{
int lastdreg = 8, lastpreg = 6;
int i, group;
@@ -3130,7 +3130,7 @@ output_push_multiple (rtx insn, rtx *ope
int ok;
/* Validate the insn again, and compute first_[dp]reg_to_save. */
- ok = push_multiple_operation (PATTERN (insn), VOIDmode);
+ ok = push_multiple_operation_p (PATTERN (insn));
gcc_assert (ok);
if (first_dreg_to_save == 8)
@@ -3154,7 +3154,7 @@ output_pop_multiple (rtx insn, rtx *oper
int ok;
/* Validate the insn again, and compute first_[dp]reg_to_save. */
- ok = pop_multiple_operation (PATTERN (insn), VOIDmode);
+ ok = pop_multiple_operation_p (PATTERN (insn));
gcc_assert (ok);
if (first_dreg_to_save == 8)
@@ -4134,8 +4134,8 @@ workaround_rts_anomaly (void)
if (GET_CODE (pat) == PARALLEL)
{
- if (push_multiple_operation (pat, VOIDmode)
- || pop_multiple_operation (pat, VOIDmode))
+ if (push_multiple_operation_p (pat)
+ || pop_multiple_operation_p (pat))
this_cycles = n_regs_to_save;
}
else
Index: gcc/config/bfin/predicates.md
===================================================================
--- gcc/config/bfin/predicates.md 2013-11-16 21:52:15.083787117 +0000
+++ gcc/config/bfin/predicates.md 2013-11-16 21:58:55.617017146 +0000
@@ -239,3 +239,11 @@ (define_predicate "mem_i_address_operand
gcc_assert (REG_P (op));
return IREG_P (op);
})
+
+(define_predicate "push_multiple_operation"
+ (and (match_code "parallel")
+ (match_test "push_multiple_operation_p (op)")))
+
+(define_predicate "pop_multiple_operation"
+ (and (match_code "parallel")
+ (match_test "pop_multiple_operation_p (op)")))