re PR target/36780 (Wrong reload generated for subreg address on SH)
PR target/36780 * config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow (plus (plus (reg) (const_int)) (const_int)) when reload_in_progress. From-SVN: r137838
This commit is contained in:
parent
cb8cc791fd
commit
96c72efecd
2 changed files with 19 additions and 0 deletions
|
@ -1,3 +1,9 @@
|
|||
2008-07-15 Kaz Kojima <kkojima@gcc.gnu.org>
|
||||
|
||||
PR target/36780
|
||||
* config/sh/sh.h (GO_IF_LEGITIMATE_ADDRESS): Allow
|
||||
(plus (plus (reg) (const_int)) (const_int)) when reload_in_progress.
|
||||
|
||||
2008-07-15 Andrew Pinski <andrew_pinski@playstation.sony.com>
|
||||
|
||||
PR target/31568
|
||||
|
|
|
@ -2501,6 +2501,19 @@ struct sh_args {
|
|||
goto LABEL; \
|
||||
} \
|
||||
} \
|
||||
/* FIXME: This is a temporary hack which should be removed. \
|
||||
When reload in progress, find_reloads_subreg_address tries to \
|
||||
make a new reload for some types of address. Unfortunately it \
|
||||
generates wrong code on SH. See PR36780. The following is to \
|
||||
avoid this issue. */ \
|
||||
if (!TARGET_SHMEDIA && reload_in_progress \
|
||||
&& GET_CODE (X) == PLUS \
|
||||
&& (GET_MODE_SIZE (MODE) == 4 || GET_MODE_SIZE (MODE) == 8) \
|
||||
&& GET_CODE (XEXP ((X), 0)) == PLUS \
|
||||
&& GET_CODE (XEXP (XEXP ((X), 0), 1)) == CONST_INT \
|
||||
&& BASE_REGISTER_RTX_P (XEXP (XEXP ((X), 0), 0)) \
|
||||
&& GET_CODE (XEXP ((X), 1)) == CONST_INT) \
|
||||
goto LABEL; \
|
||||
}
|
||||
|
||||
/* Try machine-dependent ways of modifying an illegitimate address
|
||||
|
|
Loading…
Add table
Reference in a new issue