]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[LRA]: Fix reg notes update
authorVladimir N. Makarov <vmakarov@redhat.com>
Mon, 27 Apr 2026 18:16:43 +0000 (14:16 -0400)
committerVladimir N. Makarov <vmakarov@redhat.com>
Mon, 27 Apr 2026 18:16:43 +0000 (14:16 -0400)
There is a typo in using dead_set instead of set in
clear_sparseset_regnos and regnos_in_sparseset_p.  This can result in
wrong unused (stalled) notes and wrong or worse code generation by
optimizations using unused notes after RA.

gcc/ChangeLog:

* lra-lives.cc (clear_sparseset_regnos, regnos_in_sparseset_p):
Use set instead of dead_set.

gcc/lra-lives.cc

index 1d8f53d59606821df7c02367f776bcd8a752bad5..15b6b7c8c54feb63a0d5b83bfee386b5b2be9628 100644 (file)
@@ -632,7 +632,7 @@ clear_sparseset_regnos (sparseset set, int regno, enum machine_mode mode)
 {
   if (regno >= FIRST_PSEUDO_REGISTER)
     {
-      sparseset_clear_bit (dead_set, regno);
+      sparseset_clear_bit (set, regno);
       return;
     }
   for (int last = end_hard_regno (mode, regno); regno < last; regno++)
@@ -645,7 +645,7 @@ static bool
 regnos_in_sparseset_p (sparseset set, int regno, enum machine_mode mode)
 {
   if (regno >= FIRST_PSEUDO_REGISTER)
-    return sparseset_bit_p (dead_set, regno);
+    return sparseset_bit_p (set, regno);
   for (int last = end_hard_regno (mode, regno); regno < last; regno++)
     if (!sparseset_bit_p (set, regno))
       return false;