Hi. This patch removes obsolete PRINT_OPERAND, PRINT_OPERAND_ADDRESS and PRINT_OPERAND_PUNCT_VALID_P macros from M32C back end in the GCC and introduces equivalent TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS and TARGET_PRINT_OPERAND_PUNCT_VALID_P target hooks.
Regression tested on m32c-unknown-elf. OK to install? * config/m32c/m32c.h (PRINT_OPERAND, PRINT_OPERAND_ADDRESS, PRINT_OPERAND_PUNCT_VALID_P): Remove macro. * config/m32c/m32c-protos.h (m32c_print_operand_punct_valid_p, m32c_print_operand, m32c_print_operand_address): Remove. * config/m32c/m32c.c (m32c_print_operand_punct_valid_p): Make static. Change return type to bool. Change argument type to bool. (m32c_print_operand, m32c_print_operand_address): Make static. (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS, TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define. Index: gcc/config/m32c/m32c.c =================================================================== --- gcc/config/m32c/m32c.c (revision 176672) +++ gcc/config/m32c/m32c.c (working copy) @@ -2644,8 +2644,12 @@ "fb", "sb", "a1", "a0", "r3", "r2", "r1", "r0" }; -/* Implements PRINT_OPERAND. */ -void +/* Implements TARGET_PRINT_OPERAND. */ + +#undef TARGET_PRINT_OPERAND +#define TARGET_PRINT_OPERAND m32c_print_operand + +static void m32c_print_operand (FILE * file, rtx x, int code) { int i, j, b; @@ -2998,18 +3002,28 @@ return; } -/* Implements PRINT_OPERAND_PUNCT_VALID_P. See m32c_print_operand - above for descriptions of what these do. */ -int -m32c_print_operand_punct_valid_p (int c) +/* Implements TARGET_PRINT_OPERAND_PUNCT_VALID_P. + + See m32c_print_operand above for descriptions of what these do. */ + +#undef TARGET_PRINT_OPERAND_PUNCT_VALID_P +#define TARGET_PRINT_OPERAND_PUNCT_VALID_P m32c_print_operand_punct_valid_p + +static bool +m32c_print_operand_punct_valid_p (unsigned char c) { if (c == '&' || c == '!') - return 1; - return 0; + return true; + + return false; } -/* Implements PRINT_OPERAND_ADDRESS. Nothing unusual here. */ -void +/* Implements TARGET_PRINT_OPERAND_ADDRESS. Nothing unusual here. */ + +#undef TARGET_PRINT_OPERAND_ADDRESS +#define TARGET_PRINT_OPERAND_ADDRESS m32c_print_operand_address + +static void m32c_print_operand_address (FILE * stream, rtx address) { if (GET_CODE (address) == MEM) Index: gcc/config/m32c/m32c.h =================================================================== --- gcc/config/m32c/m32c.h (revision 176672) +++ gcc/config/m32c/m32c.h (working copy) @@ -620,10 +620,6 @@ {"a0a1", 4}, \ {"r0r2r1r3", 0} } -#define PRINT_OPERAND(S,X,C) m32c_print_operand (S, X, C) -#define PRINT_OPERAND_PUNCT_VALID_P(C) m32c_print_operand_punct_valid_p (C) -#define PRINT_OPERAND_ADDRESS(S,X) m32c_print_operand_address (S, X) - #undef USER_LABEL_PREFIX #define USER_LABEL_PREFIX "_" Index: gcc/config/m32c/m32c-protos.h =================================================================== --- gcc/config/m32c/m32c-protos.h (revision 176672) +++ gcc/config/m32c/m32c-protos.h (working copy) @@ -33,7 +33,6 @@ int m32c_initial_elimination_offset (int, int); void m32c_output_reg_pop (FILE *, int); void m32c_output_reg_push (FILE *, int); -int m32c_print_operand_punct_valid_p (int); unsigned int m32c_push_rounding (int); int m32c_reg_class_from_constraint (char, const char *); void m32c_register_pragmas (void); @@ -71,8 +70,6 @@ int m32c_preferred_reload_class (rtx, int); int m32c_prepare_move (rtx *, enum machine_mode); int m32c_prepare_shift (rtx *, int, int); -void m32c_print_operand (FILE *, rtx, int); -void m32c_print_operand_address (FILE *, rtx); int m32c_reg_ok_for_base_p (rtx, int); enum reg_class m32c_regno_reg_class (int); rtx m32c_return_addr_rtx (int); Anatoly.