re PR rtl-optimization/49154 (build fails on cris-elf in libgcc: ICE in setup_pressur...
authorVladimir Makarov <vmakarov@redhat.com>
Thu, 26 May 2011 21:01:57 +0000 (21:01 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Thu, 26 May 2011 21:01:57 +0000 (21:01 +0000)
2011-05-26  Vladimir Makarov  <vmakarov@redhat.com>

PR rtl-optimization/49154
* ira.c (setup_pressure_classes): Process class without sublcasses
as a candidate for pressure classes.

From-SVN: r174309

gcc/ChangeLog
gcc/ira.c

index 60553d56680126a684ac7517c357d47be5202b62..8e487e407f27541c26469ef0cd54cec265c168b5 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-26  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/49154
+       * ira.c (setup_pressure_classes): Process class without sublcasses
+       as a candidate for pressure classes.
+
 2011-05-26  Richard Sandiford  <rdsandiford@googlemail.com>
 
        PR rtl-optimization/48575
index 358ad0a37b1d587b24148f0a84d1db0ff6eeb30b..222d48eb1c450b4c79681feb6133db2c1f397899 100644 (file)
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -799,7 +799,12 @@ setup_pressure_classes (void)
     {
       if (ira_available_class_regs[cl] == 0)
        continue;
-      if (ira_available_class_regs[cl] != 1)
+      if (ira_available_class_regs[cl] != 1
+         /* A register class without subclasses may contain a few
+            hard registers and movement between them is costly
+            (e.g. SPARC FPCC registers).  We still should consider it
+            as a candidate for a pressure class.  */
+         && alloc_reg_class_subclasses[cl][0] != LIM_REG_CLASSES)
        {
          /* Check that the moves between any hard registers of the
             current class are not more expensive for a legal mode