Commit ab162578 by Jeff Law

loop.c (strength_reduce): Adjust BENEFIT appropriately if an autoincrement memory reference will...

        * loop.c (strength_reduce): Adjust BENEFIT appropriately if an
        autoincrement memory reference will eliminate add insns.

From-SVN: r13717
parent c8163b58
...@@ -3850,9 +3850,23 @@ strength_reduce (scan_start, end, loop_top, insn_count, ...@@ -3850,9 +3850,23 @@ strength_reduce (scan_start, end, loop_top, insn_count,
unchanged (recompute it from the biv each time it is used). unchanged (recompute it from the biv each time it is used).
This decision can be made independently for each giv. */ This decision can be made independently for each giv. */
/* ??? Perhaps attempt to guess whether autoincrement will handle #ifdef AUTO_INC_DEC
some of the new add insns; if so, can increase BENEFIT /* Attempt to guess whether autoincrement will handle some of the
(undo the subtraction of add_cost that was done above). */ new add insns; if so, increase BENEFIT (undo the subtraction of
add_cost that was done above). */
if (v->giv_type == DEST_ADDR
&& GET_CODE (v->mult_val) == CONST_INT)
{
#if defined (HAVE_POST_INCREMENT) || defined (HAVE_PRE_INCREMENT)
if (INTVAL (v->mult_val) == GET_MODE_SIZE (v->mem_mode))
benefit += add_cost * bl->biv_count;
#endif
#if defined (HAVE_POST_DECREMENT) || defined (HAVE_PRE_DECREMENT)
if (-INTVAL (v->mult_val) == GET_MODE_SIZE (v->mem_mode))
benefit += add_cost * bl->biv_count;
#endif
}
#endif
/* If an insn is not to be strength reduced, then set its ignore /* If an insn is not to be strength reduced, then set its ignore
flag, and clear all_reduced. */ flag, and clear all_reduced. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment