]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/30807 (postreload bug (might be generic in trunk))
authorJ"orn Rennecke <joern.rennecke@arc.com>
Mon, 6 Jul 2009 13:28:22 +0000 (13:28 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Mon, 6 Jul 2009 13:28:22 +0000 (13:28 +0000)
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

gcc/ChangeLog
gcc/postreload.c

index ad617117cd92eb0ac3555efdac58a1483078fc4b..a490e33668e6327db75d912ee969f3d40d915259 100644 (file)
@@ -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.
index cf165ec5f0f4b1f269497c16373c91d9a5b6006a..d23ae0b990a249e8871c244fb1f8754190d04cb7 100644 (file)
@@ -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);