diff mbox

Turn 1 lra_assert into 1 gcc_assert

Message ID 2685309.VG4Hs7d4Ds@polaris
State New
Headers show

Commit Message

Eric Botcazou Oct. 9, 2014, 9:39 a.m. UTC
> OK, I guess I can copy-and-paste reload1.c:spill_failure there.

This generates the same error message than reload1.c:spill_failure (modulo the 
class of the spill register, but it's not mentioned in the asm case either).

Tested on x86_64-suse-linux, OK for the mainline?


2014-10-09  Eric Botcazou  <ebotcazou@adacore.com>

        * lra-assigns.c (assign_by_spills): Error out on spill failure.

Comments

Richard Biener Oct. 9, 2014, 10:42 a.m. UTC | #1
On Thu, Oct 9, 2014 at 11:39 AM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> OK, I guess I can copy-and-paste reload1.c:spill_failure there.
>
> This generates the same error message than reload1.c:spill_failure (modulo the
> class of the spill register, but it's not mentioned in the asm case either).
>
> Tested on x86_64-suse-linux, OK for the mainline?

Ok.

Thanks,
Richard.

>
> 2014-10-09  Eric Botcazou  <ebotcazou@adacore.com>
>
>         * lra-assigns.c (assign_by_spills): Error out on spill failure.
>
>
> --
> Eric Botcazou
diff mbox

Patch

Index: lra-assigns.c
===================================================================
--- lra-assigns.c	(revision 215968)
+++ lra-assigns.c	(working copy)
@@ -1286,10 +1286,9 @@  assign_by_spills (void)
 	break;
       if (iter > 0)
 	{
-	  /* We did not assign hard regs to reload pseudos after two
-	     iteration.  It means something is wrong with asm insn
-	     constraints.  Report it.  */
-	  bool asm_p = false;
+	  /* We did not assign hard regs to reload pseudos after two iterations.
+	     Either it's an asm and something is wrong with the constraints, or
+	     we have run out of spill registers; error out in either case.  */
 	  bitmap_head failed_reload_insns;
 
 	  bitmap_initialize (&failed_reload_insns, &reg_obstack);
@@ -1299,7 +1298,7 @@  assign_by_spills (void)
 	      bitmap_ior_into (&failed_reload_insns,
 			       &lra_reg_info[regno].insn_bitmap);
 	      /* Assign an arbitrary hard register of regno class to
-		 avoid further trouble with the asm insns.  */
+		 avoid further trouble with this insn.  */
 	      bitmap_clear_bit (&all_spilled_pseudos, regno);
 	      assign_hard_regno
 		(ira_class_hard_regs[regno_allocno_class_array[regno]][0],
@@ -1310,7 +1309,6 @@  assign_by_spills (void)
 	      insn = lra_insn_recog_data[u]->insn;
 	      if (asm_noperands (PATTERN (insn)) >= 0)
 		{
-		  asm_p = true;
 		  error_for_asm (insn,
 				 "%<asm%> operand has impossible constraints");
 		  /* Avoid further trouble with this insn.
@@ -1331,8 +1329,12 @@  assign_by_spills (void)
 		      lra_set_insn_deleted (insn);
 		    }
 		}
+	      else
+		{
+		  error ("unable to find a register to spill");
+		  fatal_insn ("this is the insn:", insn);
+		}
 	    }
-	  lra_assert (asm_p);
 	  break;
 	}
       /* This is a very rare event.  We can not assign a hard register