diff mbox

[committed] TILE-Gx: fix prologue register usage

Message ID 201303270649.r2R6nNIA008433@farm-0001.internal.tilera.com
State New
Headers show

Commit Message

Walter Lee March 27, 2013, 6:49 a.m. UTC
This patch fixes a bug that causes the prologue to use more temporary
registers than necessary.  Backported to 4.7 and 4.8.

	* config/tilegx/tilegx.c (tilegx_expand_prologue): Avoid
	double-decrement of next_scratch_regno.
diff mbox

Patch

--- gcc/config/tilegx/tilegx.c	(revision 197134)
+++ gcc/config/tilegx/tilegx.c	(working copy)
@@ -3999,11 +3999,10 @@  tilegx_expand_prologue (void)
 
 	if (r == NULL_RTX)
 	  {
-	    rtx p = compute_frame_addr (offset, &next_scratch_regno);
-	    r = gen_rtx_REG (Pmode, next_scratch_regno--);
-	    reg_save_addr[which_scratch] = r;
-
-	    emit_insn (gen_rtx_SET (VOIDmode, r, p));
+	    int prev_scratch_regno = next_scratch_regno;
+	    r = compute_frame_addr (offset, &next_scratch_regno);
+	    if (prev_scratch_regno != next_scratch_regno)
+	      reg_save_addr[which_scratch] = r;
 	  }
 	else
 	  {