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)")))

Reply via email to