unroll.c (calculate_giv_inc): Handle constant increment found in a MEM with an approp...
authorGavin Koch <gavin@cygnus.com>
Thu, 18 Dec 1997 17:31:01 +0000 (17:31 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 18 Dec 1997 17:31:01 +0000 (10:31 -0700)
        * unroll.c (calculate_giv_inc): Handle constant increment found in
        a MEM with an appropriate REG_EQUAL note.

From-SVN: r17136

gcc/ChangeLog
gcc/unroll.c

index 473fb5c..9333c23 100644 (file)
@@ -4,6 +4,9 @@ Thu Dec 18 14:51:12 1997  Jason Merrill  <jason@yorick.cygnus.com>
 
 Thu Dec 18 14:57:29 1997  Gavin Koch  <gavin@cygnus.com>
 
+       * unroll.c (calculate_giv_inc): Handle constant increment found in
+       a MEM with an appropriate REG_EQUAL note.
+
        * calls.c (expand_call): Implement LOAD_ARGS_REVERSED.
 
        * dwarf2out.c (dwarf2out_frame_debug): Handle adjustments of the
index b2879b3..6681ada 100644 (file)
@@ -1490,6 +1490,16 @@ calculate_giv_inc (pattern, src_insn, regno)
         one of the LO_SUM rtx.  */
       if (GET_CODE (increment) == LO_SUM)
        increment = XEXP (increment, 1);
+
+      /* Some ports store large constants in memory and add a REG_EQUAL
+        note to the store insn.  */
+      else if (GET_CODE (increment) == MEM)
+        {
+          rtx note = find_reg_note (src_insn, REG_EQUAL, 0);
+          if (note)
+            increment = XEXP (note, 0);
+        }
+
       else if (GET_CODE (increment) == IOR
               || GET_CODE (increment) == ASHIFT
               || GET_CODE (increment) == PLUS)