diff options
author | Jeff Law <law@gcc.gnu.org> | 1997-03-16 15:50:56 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-03-16 15:50:56 -0700 |
commit | ab16257805b6614e1ad674b29965a9faca5511bd (patch) | |
tree | 35f10784c5bc49520b0e58b68ed1f84ee4481035 /gcc | |
parent | c8163b58edb375a97197b7a2c36c1c3645528d7d (diff) | |
download | gcc-ab16257805b6614e1ad674b29965a9faca5511bd.zip gcc-ab16257805b6614e1ad674b29965a9faca5511bd.tar.gz gcc-ab16257805b6614e1ad674b29965a9faca5511bd.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/loop.c | 20 |
1 files changed, 17 insertions, 3 deletions
@@ -3850,9 +3850,23 @@ strength_reduce (scan_start, end, loop_top, insn_count, unchanged (recompute it from the biv each time it is used). This decision can be made independently for each giv. */ - /* ??? Perhaps attempt to guess whether autoincrement will handle - some of the new add insns; if so, can increase BENEFIT - (undo the subtraction of add_cost that was done above). */ +#ifdef AUTO_INC_DEC + /* Attempt to guess whether autoincrement will handle some of the + 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 flag, and clear all_reduced. */ |