https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63762
--- Comment #4 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- (In reply to Renlin Li from comment #2) > r278 is derived from r224 which is a VFP_LO_REGS. > > find_cost_and_classes assigns r278's class as GENERAL_REGS, and assign it > hard_reg 2. Another new pseudo register r290 is created from r278, and > assigned to the same hard_register and register class (GENERAL_REGS). > > The pref_class of r290 is derived from its original reg (r224), which is > VFP_LO_REGS > > In lra during the hard register assignment process, conflict is checked for > r302 which is a GENERAL_REGS. r290 is not considered, because of different > register classes(reg_pref[290].pref_class == VFP_LO_REGS ). Hard register > number 2 is chosen in this case. R2 should not be in VFP_LO_REGS - how does IRA end up choosing that ?