On 7/12/23 06:07, Richard Sandiford wrote:
Vladimir Makarov via Gcc-patches <gcc-patches@gcc.gnu.org> writes:
diff --git a/gcc/lra-assigns.cc b/gcc/lra-assigns.cc
index 73fbef29912..2f95121df06 100644
--- a/gcc/lra-assigns.cc
+++ b/gcc/lra-assigns.cc
@@ -1443,10 +1443,11 @@ assign_by_spills (void)
                 pass.  Indicate that it is no longer spilled.  */
              bitmap_clear_bit (&all_spilled_pseudos, regno);
              assign_hard_regno (hard_regno, regno);
-             if (! reload_p)
-               /* As non-reload pseudo assignment is changed we
-                  should reconsider insns referring for the
-                  pseudo.  */
+             if (! reload_p || regno_allocno_class_array[regno] == ALL_REGS)
Is this test meaningful on all targets?  We have some for which
GENERAL_REGS == ALL_REGS (e.g. nios2 and nvptx), so ALL_REGS can
be a valid allocation class.

Richard, thank you for the question.

As I remember nvptx does not use IRA/LRA.

I don't think it is a problem.  For targets with GENERAL_REGS == ALL_REGS, it only results in one more insn processing on the next constraint sub-pass.

I could do more accurate solution but it would need introducing new data (flags) for pseudos which I'd like to avoid.

Reply via email to