diff mbox

one more patch for PR69847

Message ID 57A50688.4070505@redhat.com
State New
Headers show

Commit Message

Vladimir Makarov Aug. 5, 2016, 9:35 p.m. UTC
This is a patch to fix some testsuite failures reported for arm:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69847

   The patch was bootstrapped and tested on x86-64 and ppc64.

Committed as rev. 239180.

Comments

H.J. Lu Aug. 8, 2016, 6:16 p.m. UTC | #1
On Fri, Aug 5, 2016 at 2:35 PM, Vladimir N Makarov <vmakarov@redhat.com> wrote:
>   This is a patch to fix some testsuite failures reported for arm:
>
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69847
>
>   The patch was bootstrapped and tested on x86-64 and ppc64.
>
> Committed as rev. 239180.
>

This caused:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72843
diff mbox

Patch

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 239179)
+++ ChangeLog	(working copy)
@@ -1,3 +1,10 @@ 
+2016-08-05  Vladimir Makarov  <vmakarov@redhat.com>
+
+	PR rtl-optimization/69847
+	* lra-constraints.c (process_invariant_for_inheritance): Save
+	pattern instead of src.
+	(remove_inheritance_pseudos): Use the pattern.  Add assert.
+
 2016-08-05  David Malcolm  <dmalcolm@redhat.com>
 
 	* input.c (string_concat::string_concat): New constructor.
Index: lra-constraints.c
===================================================================
--- lra-constraints.c	(revision 238991)
+++ lra-constraints.c	(working copy)
@@ -5475,7 +5475,7 @@  process_invariant_for_inheritance (rtx d
 					cl, "invariant inheritance");
 	  bitmap_set_bit (&lra_inheritance_pseudos, REGNO (new_reg));
 	  bitmap_set_bit (&check_only_regs, REGNO (new_reg));
-	  lra_reg_info[REGNO (new_reg)].restore_rtx = invariant_rtx;
+	  lra_reg_info[REGNO (new_reg)].restore_rtx = PATTERN (insn);
 	  start_sequence ();
 	  lra_emit_move (new_reg, dst_reg);
 	  new_insns = get_insns ();
@@ -6343,9 +6343,11 @@  remove_inheritance_pseudos (bitmap remov
 		  start_sequence ();
 		  /* We can not just change the source.  It might be
 		     an insn different from the move.  */
-		  lra_emit_move (SET_DEST (set), lra_reg_info[sregno].restore_rtx);
+		  emit_insn (lra_reg_info[sregno].restore_rtx);
 		  rtx_insn *new_insns = get_insns ();
 		  end_sequence ();
+		  lra_assert (single_set (new_insns) != NULL
+			      && SET_DEST (set) == SET_DEST (single_set (new_insns)));
 		  lra_process_new_insns (curr_insn, NULL, new_insns,
 					 "Changing reload<-invariant inheritance");
 		  delete_move_and_clobber (curr_insn, dregno);