Revert these two patches:
Thu Jun 17 21:34:24 1999 J"orn Rennecke <amylaar@cygnus.co.uk> * loop.c (strength_reduce): When doing biv->giv conversion, update reg note of NEXT->insn. Thu Jun 17 17:22:07 1999 J"orn Rennecke <amylaar@cygnus.co.uk> * loop.c (strength_reduce): When doing biv->giv conversion, fix up reg_biv_class. (recombine_givs): Set ix field after sorting. From-SVN: r27727
This commit is contained in:
parent
50cba6ed13
commit
e04ea7d3eb
|
@ -1,3 +1,16 @@
|
||||||
|
Thu Jun 24 15:00:47 1999 Mark Mitchell <mark@codesourcery.com>
|
||||||
|
|
||||||
|
Revert these two patches:
|
||||||
|
|
||||||
|
Thu Jun 17 21:34:24 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||||
|
* loop.c (strength_reduce): When doing biv->giv conversion, update
|
||||||
|
reg note of NEXT->insn.
|
||||||
|
|
||||||
|
Thu Jun 17 17:22:07 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||||
|
* loop.c (strength_reduce): When doing biv->giv conversion, fix up
|
||||||
|
reg_biv_class.
|
||||||
|
(recombine_givs): Set ix field after sorting.
|
||||||
|
|
||||||
Wed Jun 23 21:26:00 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
|
Wed Jun 23 21:26:00 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||||
|
|
||||||
* rtlanal.c (reg_referenced_p): Use reg_overlap_mentioned_p
|
* rtlanal.c (reg_referenced_p): Use reg_overlap_mentioned_p
|
||||||
|
|
21
gcc/loop.c
21
gcc/loop.c
|
@ -4065,7 +4065,6 @@ strength_reduce (scan_start, end, loop_top, insn_count,
|
||||||
fprintf (loop_dump_stream, "is giv of biv %d\n", bl2->regno);
|
fprintf (loop_dump_stream, "is giv of biv %d\n", bl2->regno);
|
||||||
/* Let this giv be discovered by the generic code. */
|
/* Let this giv be discovered by the generic code. */
|
||||||
REG_IV_TYPE (bl->regno) = UNKNOWN_INDUCT;
|
REG_IV_TYPE (bl->regno) = UNKNOWN_INDUCT;
|
||||||
reg_biv_class[bl->regno] = NULL_PTR;
|
|
||||||
/* We can get better optimization if we can move the giv setting
|
/* We can get better optimization if we can move the giv setting
|
||||||
before the first giv use. */
|
before the first giv use. */
|
||||||
if (dominator
|
if (dominator
|
||||||
|
@ -4117,13 +4116,7 @@ strength_reduce (scan_start, end, loop_top, insn_count,
|
||||||
}
|
}
|
||||||
/* Remove this biv from the chain. */
|
/* Remove this biv from the chain. */
|
||||||
if (bl->next)
|
if (bl->next)
|
||||||
{
|
|
||||||
/* We move the following giv from *bl->next into *bl.
|
|
||||||
We have to update reg_biv_class for that moved biv
|
|
||||||
to point to its new address. */
|
|
||||||
*bl = *bl->next;
|
*bl = *bl->next;
|
||||||
reg_biv_class[bl->regno] = bl;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*backbl = 0;
|
*backbl = 0;
|
||||||
|
@ -4198,7 +4191,7 @@ strength_reduce (scan_start, end, loop_top, insn_count,
|
||||||
for (vp = &bl->biv, next = *vp; v = next, next = v->next_iv;)
|
for (vp = &bl->biv, next = *vp; v = next, next = v->next_iv;)
|
||||||
{
|
{
|
||||||
HOST_WIDE_INT offset;
|
HOST_WIDE_INT offset;
|
||||||
rtx set, add_val, old_reg, dest_reg, last_use_insn, note;
|
rtx set, add_val, old_reg, dest_reg, last_use_insn;
|
||||||
int old_regno, new_regno;
|
int old_regno, new_regno;
|
||||||
|
|
||||||
if (! v->always_executed
|
if (! v->always_executed
|
||||||
|
@ -4305,12 +4298,6 @@ strength_reduce (scan_start, end, loop_top, insn_count,
|
||||||
REG_IV_TYPE (new_regno) = GENERAL_INDUCT;
|
REG_IV_TYPE (new_regno) = GENERAL_INDUCT;
|
||||||
REG_IV_INFO (new_regno) = v;
|
REG_IV_INFO (new_regno) = v;
|
||||||
|
|
||||||
/* If next_insn has a REG_EQUAL note that mentiones OLD_REG,
|
|
||||||
it must be replaced. */
|
|
||||||
note = find_reg_note (next->insn, REG_EQUAL, NULL_RTX);
|
|
||||||
if (note && reg_mentioned_p (old_reg, XEXP (note, 0)))
|
|
||||||
XEXP (note, 0) = copy_rtx (SET_SRC (single_set (next->insn)));
|
|
||||||
|
|
||||||
/* Remove the increment from the list of biv increments,
|
/* Remove the increment from the list of biv increments,
|
||||||
and record it as a giv. */
|
and record it as a giv. */
|
||||||
*vp = next;
|
*vp = next;
|
||||||
|
@ -7210,18 +7197,16 @@ recombine_givs (bl, loop_start, loop_end, unroll_p)
|
||||||
for (p = v->insn; INSN_UID (p) >= max_uid_for_loop; )
|
for (p = v->insn; INSN_UID (p) >= max_uid_for_loop; )
|
||||||
p = PREV_INSN (p);
|
p = PREV_INSN (p);
|
||||||
stats[i].start_luid = INSN_LUID (p);
|
stats[i].start_luid = INSN_LUID (p);
|
||||||
|
v->ix = i;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
qsort (stats, giv_count, sizeof(*stats), cmp_recombine_givs_stats);
|
qsort (stats, giv_count, sizeof(*stats), cmp_recombine_givs_stats);
|
||||||
|
|
||||||
/* Set up the ix field for each giv in stats to name
|
/* Do the actual most-recently-used recombination. */
|
||||||
the corresponding index into stats, and
|
|
||||||
do the actual most-recently-used recombination. */
|
|
||||||
for (last_giv = 0, i = giv_count - 1; i >= 0; i--)
|
for (last_giv = 0, i = giv_count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
v = giv_array[stats[i].giv_number];
|
v = giv_array[stats[i].giv_number];
|
||||||
v->ix = i;
|
|
||||||
if (v->same)
|
if (v->same)
|
||||||
{
|
{
|
||||||
struct induction *old_same = v->same;
|
struct induction *old_same = v->same;
|
||||||
|
|
Loading…
Reference in New Issue