aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorGavin Koch <gavin@cygnus.com>1997-12-18 17:31:01 +0000
committerJeff Law <law@gcc.gnu.org>1997-12-18 10:31:01 -0700
commitefb84aa5565ababb39166bb89e72f2412b1523af (patch)
tree7e795a3151fa12d4505b9a9345e3621baae1c3df /gcc
parent864b83b9bbc5145cde94d530f3e943301319f4f1 (diff)
downloadgcc-efb84aa5565ababb39166bb89e72f2412b1523af.zip
gcc-efb84aa5565ababb39166bb89e72f2412b1523af.tar.gz
gcc-efb84aa5565ababb39166bb89e72f2412b1523af.tar.bz2
unroll.c (calculate_giv_inc): Handle constant increment found in a MEM with an appropriate REG_EQUAL note.
* unroll.c (calculate_giv_inc): Handle constant increment found in a MEM with an appropriate REG_EQUAL note. From-SVN: r17136
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/unroll.c10
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 473fb5c..9333c23 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/unroll.c b/gcc/unroll.c
index b2879b3..6681ada 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -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)