The following patch prevents mistaken ASHIFT exchange found by Richard Sandiford and removes check early_clobber matching operand.

  The patch was successfully bootstrap on x86-64.

  Committed as rev. 192742.

2012-10-23  Vladimir Makarov  <vmaka...@redhat.com>

    * lra-constraints.c (extract_loc_address_regs): Don't swap ASHIFT
    operands.
    (process_alt_operands): Remove code for checking DEAD note for
    early clobber.

Index: lra-constraints.c
===================================================================
--- lra-constraints.c	(revision 192702)
+++ lra-constraints.c	(working copy)
@@ -639,7 +639,7 @@ extract_loc_address_regs (bool top_p, en
 	rtx *arg0_loc = &XEXP (x, 0);
 	enum rtx_code code0 = GET_CODE (*arg0_loc);
 	
-	if (code0 == CONST_INT)
+	if (code0 == CONST_INT && code == MULT)
 	  arg0_loc = &XEXP (x, 1);
 	extract_loc_address_regs (false, mode, as, arg0_loc, true,
 				  outer_code, code, modify_p, ad);
@@ -1781,17 +1781,7 @@ process_alt_operands (int only_alternati
 		    match_p = false;
 		    if (operands_match_p (*curr_id->operand_loc[nop],
 					  *curr_id->operand_loc[m], m_hregno))
-		      {
-			/* We should reject matching of an early
-			   clobber operand if the matching operand is
-			   not dying in the insn.  */
-			if (! curr_static_id->operand[m].early_clobber
-			    || operand_reg[nop] == NULL_RTX
-			    || (find_regno_note (curr_insn, REG_DEAD,
-						 REGNO (operand_reg[nop]))
-						 != NULL_RTX))
-			  match_p = true;
-		      }
+		      match_p = true;
 		    if (match_p)
 		      {
 			/* If we are matching a non-offsettable

Reply via email to