diff options
Diffstat (limited to 'gcc/config/m32c')
-rw-r--r-- | gcc/config/m32c/m32c-protos.h | 1 | ||||
-rw-r--r-- | gcc/config/m32c/m32c.c | 32 | ||||
-rw-r--r-- | gcc/config/m32c/m32c.h | 4 |
3 files changed, 16 insertions, 21 deletions
diff --git a/gcc/config/m32c/m32c-protos.h b/gcc/config/m32c/m32c-protos.h index ec98d81f93c..650c918b44a 100644 --- a/gcc/config/m32c/m32c-protos.h +++ b/gcc/config/m32c/m32c-protos.h @@ -79,7 +79,6 @@ rtx m32c_incoming_return_addr_rtx (void); void m32c_initialize_trampoline (rtx, rtx, rtx); int m32c_legitimate_address_p (MM, rtx, int); int m32c_legitimate_constant_p (rtx); -int m32c_legitimize_address (rtx *, rtx, MM); int m32c_legitimize_reload_address (rtx *, MM, int, int, int); rtx m32c_libcall_value (MM); int m32c_limit_reload_class (MM, int); diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index bd33934dbed..6d386e3d8fd 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -1938,33 +1938,33 @@ m32c_reg_ok_for_base_p (rtx x, int strict) displacement range. We deal with this by attempting to reload $fb itself into an address register; that seems to result in the best code. */ -int -m32c_legitimize_address (rtx * x ATTRIBUTE_UNUSED, - rtx oldx ATTRIBUTE_UNUSED, - enum machine_mode mode ATTRIBUTE_UNUSED) +#undef TARGET_LEGITIMIZE_ADDRESS +#define TARGET_LEGITIMIZE_ADDRESS m32c_legitimize_address +static rtx +m32c_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, + enum machine_mode mode) { #if DEBUG0 fprintf (stderr, "m32c_legitimize_address for mode %s\n", mode_name[mode]); - debug_rtx (*x); + debug_rtx (x); fprintf (stderr, "\n"); #endif - if (GET_CODE (*x) == PLUS - && GET_CODE (XEXP (*x, 0)) == REG - && REGNO (XEXP (*x, 0)) == FB_REGNO - && GET_CODE (XEXP (*x, 1)) == CONST_INT - && (INTVAL (XEXP (*x, 1)) < -128 - || INTVAL (XEXP (*x, 1)) > (128 - GET_MODE_SIZE (mode)))) + if (GET_CODE (x) == PLUS + && GET_CODE (XEXP (x, 0)) == REG + && REGNO (XEXP (x, 0)) == FB_REGNO + && GET_CODE (XEXP (x, 1)) == CONST_INT + && (INTVAL (XEXP (x, 1)) < -128 + || INTVAL (XEXP (x, 1)) > (128 - GET_MODE_SIZE (mode)))) { /* reload FB to A_REGS */ rtx temp = gen_reg_rtx (Pmode); - *x = copy_rtx (*x); - emit_insn (gen_rtx_SET (VOIDmode, temp, XEXP (*x, 0))); - XEXP (*x, 0) = temp; - return 1; + x = copy_rtx (x); + emit_insn (gen_rtx_SET (VOIDmode, temp, XEXP (x, 0))); + XEXP (x, 0) = temp; } - return 0; + return x; } /* Implements LEGITIMIZE_RELOAD_ADDRESS. See comment above. */ diff --git a/gcc/config/m32c/m32c.h b/gcc/config/m32c/m32c.h index 9e0c921f2ce..cb2b8bea1f0 100644 --- a/gcc/config/m32c/m32c.h +++ b/gcc/config/m32c/m32c.h @@ -587,10 +587,6 @@ typedef struct m32c_cumulative_args /* #define FIND_BASE_TERM(X) when we do unspecs for symrefs */ -#define LEGITIMIZE_ADDRESS(X,OLDX,MODE,WIN) \ - if (m32c_legitimize_address(&(X),OLDX,MODE)) \ - goto WIN; - #define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_LEVELS,WIN) \ if (m32c_legitimize_reload_address(&(X),MODE,OPNUM,TYPE,IND_LEVELS)) \ goto WIN; |