An explicit check for address registers was not required so far since
during register allocation the processing of address constraints was
sufficient. However, address constraints themself do not check for
REGNO_OK_FOR_{BASE,INDEX}_P. Thus, with the newly introduced
late-combine pass in
r15-1579-g792f97b44ffc5e we generate new insns with
invalid address registers which aren't fixed up afterwards.
Fixed by explicitly checking for address registers in
s390_decompose_addrstyle_without_index such that those new insns are
rejected.
gcc/ChangeLog:
PR target/115634
* config/s390/s390.cc (s390_decompose_addrstyle_without_index):
Check for ADDR_REGS in s390_decompose_addrstyle_without_index.
while (op && GET_CODE (op) == SUBREG)
op = SUBREG_REG (op);
- if (op && GET_CODE (op) != REG)
+ if (op && (!REG_P (op)
+ || (reload_completed
+ && !REGNO_OK_FOR_BASE_P (REGNO (op)))))
return false;
if (offset)