I have a patch to upgrade most genrecog warnings into errors. This patch fixes one for mn10300 about mn10300_store_multiple_operation not being defined as a predicate at the .md level.
Tested by building mn10300-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/mn10300/mn10300-protos.h (mn10300_store_multiple_operation): Delete. (mn10300_store_multiple_operation_p): Declare. * config/mn10300/mn10300.c (mn10300_store_multiple_operation): Rename to... (mn10300_store_multiple_operation_p): ...this and remove mode argument. * config/mn10300/predicates.md (mn10300_store_multiple_operation): Define. Index: gcc/config/mn10300/mn10300-protos.h =================================================================== --- gcc/config/mn10300/mn10300-protos.h 2013-11-16 21:52:15.083787117 +0000 +++ gcc/config/mn10300/mn10300-protos.h 2013-11-16 21:59:02.106068742 +0000 @@ -32,7 +32,7 @@ extern void mn10300_print_operand (FILE extern void mn10300_print_operand_address (FILE *, rtx); extern void mn10300_print_reg_list (FILE *, int); extern enum machine_mode mn10300_select_cc_mode (enum rtx_code, rtx, rtx); -extern int mn10300_store_multiple_operation (rtx, enum machine_mode); +extern int mn10300_store_multiple_operation_p (rtx); extern int mn10300_symbolic_operand (rtx, enum machine_mode); extern void mn10300_split_cbranch (enum machine_mode, rtx, rtx); extern int mn10300_split_and_operand_count (rtx); Index: gcc/config/mn10300/mn10300.c =================================================================== --- gcc/config/mn10300/mn10300.c 2013-11-16 21:52:15.083787117 +0000 +++ gcc/config/mn10300/mn10300.c 2013-11-16 21:59:02.107068750 +0000 @@ -1237,8 +1237,7 @@ mn10300_expand_epilogue (void) registers it saves. Return 0 otherwise. */ int -mn10300_store_multiple_operation (rtx op, - enum machine_mode mode ATTRIBUTE_UNUSED) +mn10300_store_multiple_operation_p (rtx op) { int count; int mask; Index: gcc/config/mn10300/predicates.md =================================================================== --- gcc/config/mn10300/predicates.md 2013-11-16 21:52:15.083787117 +0000 +++ gcc/config/mn10300/predicates.md 2013-11-16 21:59:02.107068750 +0000 @@ -67,3 +67,7 @@ (define_predicate "CCZN_comparison_opera (define_predicate "liw_operand" (ior (match_operand 0 "register_operand") (match_test "satisfies_constraint_O (op)"))) + +(define_predicate "mn10300_store_multiple_operation" + (and (match_code "parallel") + (match_test "mn10300_store_multiple_operation_p (op)")))