s390: Check for ADDR_REGS in s390_decompose_addrstyle_without_index

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.
This commit is contained in:
Stefan Schulze Frielinghaus 2024-06-27 15:46:24 +02:00
parent 7886830bb4
commit 187eeb99ec

View file

@ -3347,7 +3347,9 @@ s390_decompose_addrstyle_without_index (rtx op, rtx *base,
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)