Hi, I am looking at gcc-4.4.4, and porting a backend into this version. However, what didn't break in previous 4.2 / 4.3, now keeps breaking in both CB and priority algorithms. Line 1792 of ira.c keeps breaking. For context here's the function: 1783 static void 1784 setup_preferred_alternate_classes_for_new_pseudos (int start) 1785 { 1786 int i, old_regno; 1787 int max_regno = max_reg_num (); 1788 1789 for (i = start; i < max_regno; i++) 1790 { 1791 old_regno = ORIGINAL_REGNO (regno_reg_rtx[i]); 1792 ira_assert (i != old_regno); 1793 setup_reg_classes (i, reg_preferred_class (old_regno), 1794 reg_alternate_class (old_regno)); 1795 if (internal_flag_ira_verbose > 2 && ira_dump_file != NULL) 1796 fprintf (ira_dump_file, 1797 " New r%d: setting preferred %s, alternative %s\n", 1798 i, reg_class_names[reg_preferred_class (old_regno)], 1799 reg_class_names[reg_alternate_class (old_regno)]); 1800 } 1801 }
Now, with CB trying several IRA_COVER_CLASSES config changes the place where it breaks but it always breaks on my tests and always on this line. priority breaks also on this line no matter what. Now, since it is always this line that's breaking stuff I am wondering if there's anything special about it that I didn't understand yet. Any tips on what might be happening for this assert to break the register allocator? Cheers, -- PMatos