This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
ira-assert keeps turning up
- From: "Paulo J. Matos" <pocmatos at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Wed, 4 Aug 2010 15:04:52 +0100
- Subject: ira-assert keeps turning up
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