https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83317
--- Comment #4 from Vladimir Makarov <vmakarov at gcc dot gnu.org> --- Eric, I think the patch caused the problem was intended for asm insns but it actually works on any insn. I guess constraining the original patch to asms could be a solution. I can make a patch and after testing will commit it if it is ok with you. Something like Index: lra-constraints.c =================================================================== --- lra-constraints.c (revision 255470) +++ lra-constraints.c (working copy) @@ -3222,7 +3222,8 @@ /* Do not attempt to decompose arbitrary addresses generated by combine for asm operands with loose constraints, e.g 'X'. */ else if (MEM_P (op) - && !(get_constraint_type (cn) == CT_FIXED_FORM + && !(INSN_CODE (curr_insn) < 0 + && get_constraint_type (cn) == CT_FIXED_FORM && constraint_satisfied_p (op, cn))) decompose_mem_address (&ad, op); else if (GET_CODE (op) == SUBREG