Hi,

This handles NULL targetm.spill_class in assign_by_spills. This showed up as a segfault during a build for arm-none-linux-gnueabi(hf).

Fix pre-approved by richi on IRC , verified that bootstrap continues from where things broke further on a tree (that reverts 211600 which is the next breakage causing commit on arm-none-linux-gnueabihf)

I'll apply this in about 45 minutes when I get back to my desk if no one objects.

regards
Ramana


2014-06-16  Ramana Radhakrishnan  <ramana.radhakrish...@arm.com>

        PR rtl-optimization/61522
* lra-assigns.c (assign_by_spills): Handle NULL targetm.spill_class.
diff --git a/gcc/lra-assigns.c b/gcc/lra-assigns.c
index cea4c33..5de18e1 100644
--- a/gcc/lra-assigns.c
+++ b/gcc/lra-assigns.c
@@ -1420,7 +1420,7 @@ assign_by_spills (void)
                 alternatives of insns containing the pseudo.  */
              bitmap_set_bit (&changed_pseudo_bitmap, regno);
            }
-         else
+         else if (targetm.spill_class)
            {
              enum reg_class rclass = lra_get_allocno_class (regno);
              enum reg_class spill_class;
@@ -1438,12 +1438,12 @@ assign_by_spills (void)
              if (hard_regno < 0)
                regno_allocno_class_array[regno] = rclass;
              else
-               {
-                 setup_reg_classes
-                   (regno, spill_class, spill_class, spill_class);
-                 assign_hard_regno (hard_regno, regno);
-                 bitmap_set_bit (&changed_pseudo_bitmap, regno);
-               }
+                 {
+                   setup_reg_classes
+                     (regno, spill_class, spill_class, spill_class);
+                   assign_hard_regno (hard_regno, regno);
+                   bitmap_set_bit (&changed_pseudo_bitmap, regno);
+                 }
            }
        }
     }

Reply via email to