backport: pa.c (pa_legitimate_address_p): For scaled indexing...
Backport from mainline 2017-12-03 John David Anglin <danglin@gcc.gnu.org> * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing, require base operand is a REG_POINTER prior to reload on targets with non-equivalent space registers. From-SVN: r255762
This commit is contained in:
parent
eb94321967
commit
4e138baf89
|
@ -1,3 +1,12 @@
|
|||
2017-12-17 John David Anglin <danglin@gcc.gnu.org>
|
||||
|
||||
Backport from mainline
|
||||
2017-12-03 John David Anglin <danglin@gcc.gnu.org>
|
||||
|
||||
* config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
|
||||
require base operand is a REG_POINTER prior to reload on targets
|
||||
with non-equivalent space registers.
|
||||
|
||||
2017-12-15 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/83269
|
||||
|
|
|
@ -10511,9 +10511,16 @@ pa_legitimate_address_p (machine_mode mode, rtx x, bool strict)
|
|||
|
||||
if (!TARGET_DISABLE_INDEXING
|
||||
&& GET_CODE (index) == MULT
|
||||
&& MODE_OK_FOR_SCALED_INDEXING_P (mode)
|
||||
/* Only accept base operands with the REG_POINTER flag prior to
|
||||
reload on targets with non-equivalent space registers. */
|
||||
&& (TARGET_NO_SPACE_REGS
|
||||
|| (base == XEXP (x, 1)
|
||||
&& (reload_completed
|
||||
|| (reload_in_progress && HARD_REGISTER_P (base))
|
||||
|| REG_POINTER (base))))
|
||||
&& REG_P (XEXP (index, 0))
|
||||
&& GET_MODE (XEXP (index, 0)) == Pmode
|
||||
&& MODE_OK_FOR_SCALED_INDEXING_P (mode)
|
||||
&& (strict ? STRICT_REG_OK_FOR_INDEX_P (XEXP (index, 0))
|
||||
: REG_OK_FOR_INDEX_P (XEXP (index, 0)))
|
||||
&& GET_CODE (XEXP (index, 1)) == CONST_INT
|
||||
|
|
Loading…
Reference in New Issue