aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/m32c/m32c.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2008-07-19 12:14:13 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2008-07-19 12:14:13 +0100
commitea471af0b8ecd3979665da8c74f120963254c5cd (patch)
tree3ea13d8ae72f15d919974c9c7f445f4112ff2f24 /gcc/config/m32c/m32c.c
parentfa8884d805ef576b616dbaf062eb882b80efb467 (diff)
downloadgcc-ea471af0b8ecd3979665da8c74f120963254c5cd.zip
gcc-ea471af0b8ecd3979665da8c74f120963254c5cd.tar.gz
gcc-ea471af0b8ecd3979665da8c74f120963254c5cd.tar.bz2
re PR target/36780 (Wrong reload generated for subreg address on SH)
PR target/36780 PR target/36827 * reload.c (find_reloads_subreg_address): Only reload address if reloaded == 0, not for reloaded != 1. Revert: 2008-07-16 Joseph Myers <joseph@codesourcery.com> * config/m32c/m32c.c (BIG_FB_ADJ): Move definition earlier. (m32c_legitimate_address_p): Handle "++rii" addresses created by m32c_legitimize_reload_address. 2008-07-15 Kaz Kojima <kkojima@gcc.gnu.org> * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress. From-SVN: r137976
Diffstat (limited to 'gcc/config/m32c/m32c.c')
-rw-r--r--gcc/config/m32c/m32c.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index ef6ba16..b0733dd 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -1778,8 +1778,6 @@ m32c_init_libfuncs (void)
/* Addressing Modes */
-#define BIG_FB_ADJ 0
-
/* Used by GO_IF_LEGITIMATE_ADDRESS. The r8c/m32c family supports a
wide range of non-orthogonal addressing modes, including the
ability to double-indirect on *some* of them. Not all insns
@@ -1897,17 +1895,6 @@ m32c_legitimate_address_p (enum machine_mode mode, rtx x, int strict)
return 0;
}
}
- if (RTX_IS ("++rii"))
- {
- rtx reg = patternr[2];
- HOST_WIDE_INT offs = INTVAL (patternr[3]);
-
- /* Avoid reloads for addresses generated by
- m32c_legitimize_reload_address being generated by
- find_reloads_subreg_address. */
- if (REGNO (reg) == FB_REGNO && offs == -BIG_FB_ADJ)
- return 1;
- }
return 0;
}
@@ -1955,6 +1942,8 @@ m32c_reg_ok_for_base_p (rtx x, int strict)
frame, so the third case seems best. Note that we subtract the
zero, but detect that in the addhi3 pattern. */
+#define BIG_FB_ADJ 0
+
/* Implements LEGITIMIZE_ADDRESS. The only address we really have to
worry about is frame base offsets, as $fb has a limited
displacement range. We deal with this by attempting to reload $fb