diff options
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/config/sh/sh-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 43 | ||||
-rw-r--r-- | gcc/config/sh/sh.h | 14 |
4 files changed, 44 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 78a410a..4bc8725 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,19 @@ 2010-06-17 Nathan Froyd <froydnj@codesourcery.com> + * config/sh/sh-protos.h (print_operand): Delete. + (print_operand_address): Delete. + * config/sh/sh.h (PRINT_OPERAND): Delete. + (PRINT_OPERAND_PUNCT_VALID_P): Delete. + (PRINT_OPERAND_ADDRESS): Delete. + * config/sh/sh.c (sh_print_operand_address): Make static. + (sh_print_operand): Make static. Call sh_print_operand_address + and sh_print_operand. + (sh_print_operand_punct_valid_p): New function. + (TARGET_PRINT_OPERAND, TARGET_PRINT_OPERAND_ADDRESS): Define. + (TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define. + +2010-06-17 Nathan Froyd <froydnj@codesourcery.com> + * config/mcore/mcore-protos.h (mcore_print_operand): Delete. (mcore_print_operand_address): Delete. * config/mcore/mcore.h (PRINT_OPERAND): Delete. diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h index d59cf6a..782a88e 100644 --- a/gcc/config/sh/sh-protos.h +++ b/gcc/config/sh/sh-protos.h @@ -64,8 +64,6 @@ extern rtx legitimize_pic_address (rtx, enum machine_mode, rtx); extern int nonpic_symbol_mentioned_p (rtx); extern void emit_sf_insn (rtx); extern void emit_df_insn (rtx); -extern void print_operand_address (FILE *, rtx); -extern void print_operand (FILE *, rtx, int); extern void output_pic_addr_const (FILE *, rtx); extern int expand_block_move (rtx *); extern int prepare_move_operands (rtx[], enum machine_mode mode); diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index e186a10..9a0f88c 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -198,6 +198,9 @@ static tree sh2a_handle_function_vector_handler_attribute (tree *, tree, static tree sh_handle_sp_switch_attribute (tree *, tree, tree, int, bool *); static tree sh_handle_trap_exit_attribute (tree *, tree, tree, int, bool *); static tree sh_handle_renesas_attribute (tree *, tree, tree, int, bool *); +static void sh_print_operand (FILE *, rtx, int); +static void sh_print_operand_address (FILE *, rtx); +static bool sh_print_operand_punct_valid_p (unsigned char code); static void sh_output_function_epilogue (FILE *, HOST_WIDE_INT); static void sh_insert_attributes (tree, tree *); static const char *sh_check_pch_target_flags (int); @@ -326,6 +329,13 @@ static const struct attribute_spec sh_attribute_table[] = #undef TARGET_ASM_ALIGNED_DI_OP #define TARGET_ASM_ALIGNED_DI_OP "\t.quad\t" +#undef TARGET_PRINT_OPERAND +#define TARGET_PRINT_OPERAND sh_print_operand +#undef TARGET_PRINT_OPERAND_ADDRESS +#define TARGET_PRINT_OPERAND_ADDRESS sh_print_operand_address +#undef TARGET_PRINT_OPERAND_PUNCT_VALID_P +#define TARGET_PRINT_OPERAND_PUNCT_VALID_P sh_print_operand_punct_valid_p + #undef TARGET_ASM_FUNCTION_EPILOGUE #define TARGET_ASM_FUNCTION_EPILOGUE sh_output_function_epilogue @@ -966,8 +976,8 @@ sh_override_options (void) /* Print the operand address in x to the stream. */ -void -print_operand_address (FILE *stream, rtx x) +static void +sh_print_operand_address (FILE *stream, rtx x) { switch (GET_CODE (x)) { @@ -1045,8 +1055,8 @@ print_operand_address (FILE *stream, rtx x) 'u' prints the lowest 16 bits of CONST_INT, as an unsigned value. 'o' output an operator. */ -void -print_operand (FILE *stream, rtx x, int code) +static void +sh_print_operand (FILE *stream, rtx x, int code) { int regno; enum machine_mode mode; @@ -1120,7 +1130,7 @@ print_operand (FILE *stream, rtx x, int code) else if (MEM_P (x)) { x = adjust_address (x, SImode, 4 * LSW); - print_operand_address (stream, XEXP (x, 0)); + sh_print_operand_address (stream, XEXP (x, 0)); } else { @@ -1132,7 +1142,7 @@ print_operand (FILE *stream, rtx x, int code) if (GET_MODE_SIZE (mode) >= 8) sub = simplify_subreg (SImode, x, mode, 4 * LSW); if (sub) - print_operand (stream, sub, 0); + sh_print_operand (stream, sub, 0); else output_operand_lossage ("invalid operand to %%R"); } @@ -1147,7 +1157,7 @@ print_operand (FILE *stream, rtx x, int code) else if (MEM_P (x)) { x = adjust_address (x, SImode, 4 * MSW); - print_operand_address (stream, XEXP (x, 0)); + sh_print_operand_address (stream, XEXP (x, 0)); } else { @@ -1159,7 +1169,7 @@ print_operand (FILE *stream, rtx x, int code) if (GET_MODE_SIZE (mode) >= 8) sub = simplify_subreg (SImode, x, mode, 4 * MSW); if (sub) - print_operand (stream, sub, 0); + sh_print_operand (stream, sub, 0); else output_operand_lossage ("invalid operand to %%S"); } @@ -1175,7 +1185,7 @@ print_operand (FILE *stream, rtx x, int code) if (GET_CODE (XEXP (x, 0)) != PRE_DEC && GET_CODE (XEXP (x, 0)) != POST_INC) x = adjust_address (x, SImode, 4); - print_operand_address (stream, XEXP (x, 0)); + sh_print_operand_address (stream, XEXP (x, 0)); break; default: break; @@ -1189,7 +1199,7 @@ print_operand (FILE *stream, rtx x, int code) { case REG: case SUBREG: - print_operand (stream, x, 0); + sh_print_operand (stream, x, 0); break; default: break; @@ -1248,14 +1258,14 @@ print_operand (FILE *stream, rtx x, int code) { case REG: case SUBREG: - print_operand (stream, x, 0); + sh_print_operand (stream, x, 0); fputs (", 0", stream); break; case PLUS: - print_operand (stream, XEXP (x, 0), 0); + sh_print_operand (stream, XEXP (x, 0), 0); fputs (", ", stream); - print_operand (stream, XEXP (x, 1), 0); + sh_print_operand (stream, XEXP (x, 1), 0); break; default: @@ -1398,6 +1408,13 @@ print_operand (FILE *stream, rtx x, int code) break; } } + +static bool +sh_print_operand_punct_valid_p (unsigned char code) +{ + return (code == '.' || code == '#' || code == '@' || code == ',' + || code == '$' || code == '\'' || code == '>'); +} /* Encode symbol attributes of a SYMBOL_REF into its diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 4eb8f39..9482387 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -2441,20 +2441,6 @@ struct sh_args { #define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \ final_prescan_insn ((INSN), (OPVEC), (NOPERANDS)) -/* Print operand X (an rtx) in assembler syntax to file FILE. - CODE is a letter or dot (`z' in `%z0') or 0 if no letter was specified. - For `%' followed by punctuation, CODE is the punctuation and X is null. */ - -#define PRINT_OPERAND(STREAM, X, CODE) print_operand ((STREAM), (X), (CODE)) - -/* Print a memory address as an operand to reference that memory location. */ - -#define PRINT_OPERAND_ADDRESS(STREAM,X) print_operand_address ((STREAM), (X)) - -#define PRINT_OPERAND_PUNCT_VALID_P(CHAR) \ - ((CHAR) == '.' || (CHAR) == '#' || (CHAR) == '@' || (CHAR) == ',' \ - || (CHAR) == '$' || (CHAR) == '\'' || (CHAR) == '>') - /* Recognize machine-specific patterns that may appear within constants. Used for PIC-specific UNSPECs. */ #define OUTPUT_ADDR_CONST_EXTRA(STREAM, X, FAIL) \ |