summaryrefslogtreecommitdiffstats
path: root/gcc/config/m32c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/m32c')
-rw-r--r--gcc/config/m32c/m32c-protos.h1
-rw-r--r--gcc/config/m32c/m32c.c32
-rw-r--r--gcc/config/m32c/m32c.h4
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;
OpenPOWER on IntegriCloud