]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[LRA]: Fix a bug in finding conflicts in rematerialization
authorVladimir N. Makarov <vmakarov@redhat.com>
Wed, 29 Apr 2026 12:50:32 +0000 (08:50 -0400)
committerVladimir N. Makarov <vmakarov@redhat.com>
Wed, 29 Apr 2026 15:39:40 +0000 (11:39 -0400)
In LRA rematerialization wrong mode is used to find register conflicts. It
can result in wrong rematerialization. The patch fixes this.

gcc/ChangeLog:

* lra-remat.cc (reg_overlap_for_remat_p): Use the right mode for
regno2.

gcc/lra-remat.cc

index c7ae0f7b8c161b120b26eed5f132615efb2866c8..c4da3f75e59855eff9f8e4d78c97b6095608df9b 100644 (file)
@@ -697,7 +697,7 @@ reg_overlap_for_remat_p (lra_insn_reg *reg, rtx_insn *insn)
        if (regno2 >= FIRST_PSEUDO_REGISTER)
          nregs2 = 1;
        else
-         nregs2 = hard_regno_nregs (regno2, reg->biggest_mode);
+         nregs2 = hard_regno_nregs (regno2, reg2->biggest_mode);
 
        if ((regno2 + nregs2 - 1 >= regno && regno2 < regno + nregs)
            || (regno + nregs - 1 >= regno2 && regno < regno2 + nregs2))