diff options
author | Joseph Myers <joseph@codesourcery.com> | 2008-07-19 12:14:13 +0100 |
---|---|---|
committer | Joseph Myers <jsm28@gcc.gnu.org> | 2008-07-19 12:14:13 +0100 |
commit | ea471af0b8ecd3979665da8c74f120963254c5cd (patch) | |
tree | 3ea13d8ae72f15d919974c9c7f445f4112ff2f24 /gcc/config/m32c/m32c.c | |
parent | fa8884d805ef576b616dbaf062eb882b80efb467 (diff) | |
download | gcc-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.c | 15 |
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 |