https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109520
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |vmakarov at gcc dot gnu.org --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- ISTR a duplicate. We're looping in lra () do { ... if (fails_p) { /* It is a very rare case. It is the last hope to split a hard regno live range for a reload pseudo. */ if (live_p) lra_clear_live_ranges (); live_p = false; if (! lra_split_hard_reg_for ()) break; lra_hard_reg_split_p = true; } } while (fails_p && !lra_asm_error_p); not sure if that's ever expected to execute the if (fails_p) case more than once? That is, lra_split_hard_reg_for for some reason does something twice?