Sorry, hit wrong button. The attached patch fixes gcc bootstrap on hppa-hpux. Revision r254585 changed the handling of scaled-index addresses. We weren't checking the base operand to ensure that the REG_POINTER flag was set prior to load. As a result, we accepted invalid base register operands.
The attached change fixes this problem. Dave -- John David Anglin dave.ang...@bell.net
2017-12-03 John David Anglin <dang...@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. Index: config/pa/pa.c =================================================================== --- config/pa/pa.c (revision 254585) +++ config/pa/pa.c (working copy) @@ -10544,9 +10544,16 @@ 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