https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116550

denisc at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |denisc at gcc dot gnu.org

--- Comment #2 from denisc at gcc dot gnu.org ---
Probably I found a bug in lra-constraints.cc
I can explain it later.
Johan can you test the patch ?


diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc
index fdcc07764a2..1f63113f321 100644
--- a/gcc/lra-constraints.cc
+++ b/gcc/lra-constraints.cc
@@ -680,7 +680,8 @@ get_reload_reg (enum op_type type, machine_mode mode, rtx
original,
         used by reload instructions.  */
       if (REG_P (original)
          && (int) REGNO (original) >= new_regno_start
-         && INSN_UID (curr_insn) >= new_insn_uid_start
+         && (INSN_UID (curr_insn) >= new_insn_uid_start
+             || ira_former_scratch_p (REGNO (original)))
          && in_class_p (original, rclass, &new_class, true))
        {
          unsigned int regno = REGNO (original);

Reply via email to