diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2011-12-15 19:30:08 +0000 |
---|---|---|
committer | Georg-Johann Lay <gjl@gcc.gnu.org> | 2011-12-15 19:30:08 +0000 |
commit | 666b67b1b98d4587c6f687b246109117b1fe5ebc (patch) | |
tree | 1cc265052379354348cff421af470f833a61fe88 /gcc/config | |
parent | faf81b1a183e3a29f6360e52b622fe0d5717b09b (diff) | |
download | gcc-666b67b1b98d4587c6f687b246109117b1fe5ebc.tar.gz |
avr-protos.h (print_operand): Remove.
* config/avr/avr-protos.h (print_operand): Remove.
(print_operand_address): Remove.
* config/avr/avr.h (PRINT_OPERAND): Remove.
(PRINT_OPERAND_ADDRESS): Remove.
(PRINT_OPERAND_PUNCT_VALID_P): Remove.
* config/avr/avr.c (TARGET_PRINT_OPERAND): New hook define.
(TARGET_PRINT_OPERAND_ADDRESS): New hook define.
(TARGET_PRINT_OPERAND_PUNCT_VALID_P): New hook define.
(print_operand_address): Rename to...
(avr_print_operand_address): ...this and make static.
(print_operand): Rename to...
(avr_print_operand): ...this and make static.
(avr_print_operand_punct_valid_p): New static function.
From-SVN: r182386
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/avr/avr-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 43 | ||||
-rw-r--r-- | gcc/config/avr/avr.h | 6 |
3 files changed, 31 insertions, 20 deletions
diff --git a/gcc/config/avr/avr-protos.h b/gcc/config/avr/avr-protos.h index bafd794a302..123045181c9 100644 --- a/gcc/config/avr/avr-protos.h +++ b/gcc/config/avr/avr-protos.h @@ -101,8 +101,6 @@ extern const char* output_reload_inhi (rtx*, rtx, int*); extern const char* output_reload_insisf (rtx*, rtx, int*); extern const char* avr_out_reload_inpsi (rtx*, rtx, int*); extern void notice_update_cc (rtx body, rtx insn); -extern void print_operand (FILE *file, rtx x, int code); -extern void print_operand_address (FILE *file, rtx addr); extern int reg_unused_after (rtx insn, rtx reg); extern int _reg_unused_after (rtx insn, rtx reg); extern int avr_jump_mode (rtx x, rtx insn); diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 367e76bf3ac..2493638aaec 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -289,6 +289,13 @@ bool avr_need_copy_data_p = false; #undef TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS #define TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS avr_addr_space_legitimize_address +#undef TARGET_PRINT_OPERAND +#define TARGET_PRINT_OPERAND avr_print_operand +#undef TARGET_PRINT_OPERAND_ADDRESS +#define TARGET_PRINT_OPERAND_ADDRESS avr_print_operand_address +#undef TARGET_PRINT_OPERAND_PUNCT_VALID_P +#define TARGET_PRINT_OPERAND_PUNCT_VALID_P avr_print_operand_punct_valid_p + /* Custom function to replace string prefix. @@ -1733,10 +1740,12 @@ cond_string (enum rtx_code code) return ""; } + +/* Implement `TARGET_PRINT_OPERAND_ADDRESS'. */ /* Output ADDR to FILE as address. */ -void -print_operand_address (FILE *file, rtx addr) +static void +avr_print_operand_address (FILE *file, rtx addr) { switch (GET_CODE (addr)) { @@ -1791,11 +1800,21 @@ print_operand_address (FILE *file, rtx addr) } +/* Implement `TARGET_PRINT_OPERAND_PUNCT_VALID_P'. */ + +static bool +avr_print_operand_punct_valid_p (unsigned char code) +{ + return code == '~' || code == '!'; +} + + +/* Implement `TARGET_PRINT_OPERAND'. */ /* Output X as assembler operand to file FILE. For a description of supported %-codes, see top of avr.md. */ -void -print_operand (FILE *file, rtx x, int code) +static void +avr_print_operand (FILE *file, rtx x, int code) { int abcd = 0; @@ -1889,14 +1908,14 @@ print_operand (FILE *file, rtx x, int code) } else if (code == 'i') { - print_operand (file, addr, 'i'); + avr_print_operand (file, addr, 'i'); } else if (code == 'o') { if (GET_CODE (addr) != PLUS) fatal_insn ("bad address, not (reg+disp):", addr); - print_operand (file, XEXP (addr, 1), 0); + avr_print_operand (file, XEXP (addr, 1), 0); } else if (code == 'p' || code == 'r') { @@ -1904,21 +1923,21 @@ print_operand (FILE *file, rtx x, int code) fatal_insn ("bad address, not post_inc or pre_dec:", addr); if (code == 'p') - print_operand_address (file, XEXP (addr, 0)); /* X, Y, Z */ + avr_print_operand_address (file, XEXP (addr, 0)); /* X, Y, Z */ else - print_operand (file, XEXP (addr, 0), 0); /* r26, r28, r30 */ + avr_print_operand (file, XEXP (addr, 0), 0); /* r26, r28, r30 */ } else if (GET_CODE (addr) == PLUS) { - print_operand_address (file, XEXP (addr,0)); + avr_print_operand_address (file, XEXP (addr,0)); if (REGNO (XEXP (addr, 0)) == REG_X) fatal_insn ("internal compiler error. Bad address:" ,addr); fputc ('+', file); - print_operand (file, XEXP (addr,1), code); + avr_print_operand (file, XEXP (addr,1), code); } else - print_operand_address (file, addr); + avr_print_operand_address (file, addr); } else if (code == 'i') { @@ -1954,7 +1973,7 @@ print_operand (FILE *file, rtx x, int code) else if (code == 'k') fputs (cond_string (reverse_condition (GET_CODE (x))), file); else - print_operand_address (file, x); + avr_print_operand_address (file, x); } /* Update the condition code in the INSN. */ diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 14effd86a6f..33017ba74bd 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -497,12 +497,6 @@ typedef struct avr_args { #define FINAL_PRESCAN_INSN(insn, operand, nop) final_prescan_insn (insn, operand,nop) -#define PRINT_OPERAND(STREAM, X, CODE) print_operand (STREAM, X, CODE) - -#define PRINT_OPERAND_PUNCT_VALID_P(CODE) ((CODE) == '~' || (CODE) == '!') - -#define PRINT_OPERAND_ADDRESS(STREAM, X) print_operand_address(STREAM, X) - #define ASM_OUTPUT_REG_PUSH(STREAM, REGNO) \ { \ gcc_assert (REGNO < 32); \ |