aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ"orn Rennecke <joern.rennecke@arc.com>2009-07-06 13:28:22 +0000
committerKaz Kojima <kkojima@gcc.gnu.org>2009-07-06 13:28:22 +0000
commit83f63251d92b61d083e7801e762089b372cbcf8e (patch)
tree035a4c63678bcbdbee8bf0517b6aa1b9f6cc97a7
parent172d54e01fa1a14b659988de3dc616e84d1a8fed (diff)
downloadgcc-83f63251d92b61d083e7801e762089b372cbcf8e.zip
gcc-83f63251d92b61d083e7801e762089b372cbcf8e.tar.gz
gcc-83f63251d92b61d083e7801e762089b372cbcf8e.tar.bz2
re PR rtl-optimization/30807 (postreload bug (might be generic in trunk))
PR rtl-optimization/30807 * postreload.c (reload_combine): For every new use of REG_SUM, record the use of BASE. Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org> From-SVN: r149282
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/postreload.c13
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ad61711..a490e33 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2009-07-06 J"orn Rennecke <joern.rennecke@arc.com>
+ Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR rtl-optimization/30807
+ * postreload.c (reload_combine): For every new use of REG_SUM,
+ record the use of BASE.
+
2009-07-06 Jan Hubicka <jh@suse.cz>
* params.def: Revert my accidental commit at 2009-06-30.
diff --git a/gcc/postreload.c b/gcc/postreload.c
index cf165ec..d23ae0b 100644
--- a/gcc/postreload.c
+++ b/gcc/postreload.c
@@ -886,6 +886,19 @@ reload_combine (void)
if (apply_change_group ())
{
+ /* For every new use of REG_SUM, we have to record the use
+ of BASE therein, i.e. operand 1. */
+ for (i = reg_state[regno].use_index;
+ i < RELOAD_COMBINE_MAX_USES; i++)
+ reload_combine_note_use
+ (&XEXP (*reg_state[regno].reg_use[i].usep, 1),
+ reg_state[regno].reg_use[i].insn);
+
+ if (reg_state[REGNO (base)].use_ruid
+ > reg_state[regno].use_ruid)
+ reg_state[REGNO (base)].use_ruid
+ = reg_state[regno].use_ruid;
+
/* Delete the reg-reg addition. */
delete_insn (insn);