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