From: John David Anglin Date: Sun, 17 Dec 2017 17:05:15 +0000 (+0000) Subject: backport: pa.c (pa_legitimate_address_p): For scaled indexing... X-Git-Tag: releases/gcc-6.5.0~630 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6aed9cb9c8b21e439f914567851fed51751b2f9;p=thirdparty%2Fgcc.git backport: pa.c (pa_legitimate_address_p): For scaled indexing... Backport from mainline 2017-12-03 John David Anglin * 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: r255763 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3331fed614e5..30711960ee57 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2017-12-17 John David Anglin + + Backport from mainline + 2017-12-03 John David Anglin + + * 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 Eric Botcazou PR target/66488 diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index cc4dfcf1ba5d..b4f7a7113ff4 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -10462,9 +10462,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