From 0a514f47b835740bc283e61541883a2793d4af1f Mon Sep 17 00:00:00 2001
From: Walter Lee <walt@tilera.com>
Date: Wed, 27 Mar 2013 06:18:49 +0000
Subject: [PATCH] tilegx.c (tilegx_expand_prologue): Avoid double-decrement of
 next_scratch_regno.

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

From-SVN: r197139
---
 gcc/ChangeLog              | 5 +++++
 gcc/config/tilegx/tilegx.c | 9 ++++-----
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 919d3d720ab4..519cce0de82b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2013-03-27  Walter Lee  <walt@tilera.com>
+
+	* config/tilegx/tilegx.c (tilegx_expand_prologue): Avoid
+	double-decrement of next_scratch_regno.
+
 2013-03-27  Walter Lee  <walt@tilera.com>
 
 	* config/tilegx/tilegx.md (insn_v1mulu): Fix constraints on
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index 9f2aad5eb38f..beb1012cf2c6 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -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
 	  {
-- 
GitLab