https://gcc.gnu.org/g:24df430108c0cdf83d7cccd69367a977adca7da0
commit r15-6351-g24df430108c0cdf83d7cccd69367a977adca7da0 Author: Vladimir N. Makarov <vmaka...@redhat.com> Date: Wed Dec 18 14:00:38 2024 -0500 [PR117248][LRA]: Fix calculation of conflict hard regs of pseudo The 1st patch for PR117248 resulted in PR117299 (libgo failures on arm). So this is a patch solving the problem in another way. gcc/ChangeLog: PR rtl-optimization/117248 * lra-lives.cc (process_bb_lives): Update conflict hard regs even when clobber hard reg is not marked as dead. Diff: --- gcc/lra-lives.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/lra-lives.cc b/gcc/lra-lives.cc index 510f7d927ab0..94cb000bc5a1 100644 --- a/gcc/lra-lives.cc +++ b/gcc/lra-lives.cc @@ -1006,7 +1006,15 @@ process_bb_lives (basic_block bb, int &curr_point, bool dead_insn_p) clobbered_regset)) break; if (reg2 == NULL) - make_hard_regno_dead (reg->regno); + { + make_hard_regno_dead (reg->regno); + } + else + { + EXECUTE_IF_SET_IN_SPARSESET (pseudos_live, j) + SET_HARD_REG_BIT (lra_reg_info[j].conflict_hard_regs, + reg->regno); + } } /* Increment the current program point if we must. */