From: Vladimir N. Makarov Date: Wed, 29 Apr 2026 12:50:32 +0000 (-0400) Subject: [LRA]: Fix a bug in finding conflicts in rematerialization X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb3b31e0cbdd779b3687b25334aa6a3766aec3f3;p=thirdparty%2Fgcc.git [LRA]: Fix a bug in finding conflicts in rematerialization 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. --- diff --git a/gcc/lra-remat.cc b/gcc/lra-remat.cc index c7ae0f7b8c1..c4da3f75e59 100644 --- a/gcc/lra-remat.cc +++ b/gcc/lra-remat.cc @@ -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))