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

Reply via email to