Hi Alex, Hi Jeff, There is a typo in the MN10300 store_movm pattern. It calls mn10300_store_multiple_operation to generate a bit mask of registers to be pushed, which it then passes to mn10300_print_reg_list. But mn10300_store_multiple_operation is actually a predicate function (defined in predicates.md). The function that should have been called is mn10300_store_multiple_operation_p.
The patch below is the obvious fix for the typo, but I am wondering whether it would be better to rename the two functions. Eg: mn10300_store_multiple_operation -> mn10300_store_multiple_operation_p mn10300_store_multiple_operation_p -> mn10300_store_multiple_regs Cheers Nick gcc/ChangeLog 2014-01-29 Nick Clifton <ni...@redhat.com> * config/mn10300/mn10300.md (store_movm): Fix typo. Index: gcc/config/mn10300/mn10300.md =================================================================== --- gcc/config/mn10300/mn10300.md (revision 207224) +++ gcc/config/mn10300/mn10300.md (working copy) @@ -2059,8 +2059,7 @@ { fputs ("\tmovm ", asm_out_file); mn10300_print_reg_list (asm_out_file, - mn10300_store_multiple_operation (operands[0], - VOIDmode)); + mn10300_store_multiple_operation_p (operands[0])); fprintf (asm_out_file, ",(sp)\n"); return ""; }