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

Reply via email to