diff mbox

[LRA] PR 61522 - Handle NULL targetm.spill_class

Message ID 539F07D0.3040609@arm.com
State New
Headers show

Commit Message

Ramana Radhakrishnan June 16, 2014, 3:05 p.m. UTC
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.radhakrishnan@arm.com>

         PR rtl-optimization/61522
         * lra-assigns.c (assign_by_spills): Handle NULL 
targetm.spill_class.

Comments

Jakub Jelinek June 16, 2014, 3:13 p.m. UTC | #1
On Mon, Jun 16, 2014 at 04:05:52PM +0100, Ramana Radhakrishnan wrote:
> 	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.

Please only commit the first hunk, not the second.  That looks like
incorrectly indenting something that has been correctly indented before.

> 2014-06-16  Ramana Radhakrishnan  <ramana.radhakrishnan@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);
> +		  }
>  	    }
>  	}
>      }


	Jakub
diff mbox

Patch

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);
+		  }
 	    }
 	}
     }