aboutsummaryrefslogtreecommitdiff
path: root/gcc/loop.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2001-09-09 10:45:21 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2001-09-09 08:45:21 +0000
commit5bb08c847fa53bc7d6e4c835f4ba4fcf4ca1fdf3 (patch)
tree0a5c30ced0389a2e395fdf18fe927e3da06fdbe9 /gcc/loop.c
parent1eb356b98df2a898b6650c7641d629fcf3db0c30 (diff)
downloadgcc-5bb08c847fa53bc7d6e4c835f4ba4fcf4ca1fdf3.zip
gcc-5bb08c847fa53bc7d6e4c835f4ba4fcf4ca1fdf3.tar.gz
gcc-5bb08c847fa53bc7d6e4c835f4ba4fcf4ca1fdf3.tar.bz2
* loop.c (combine_givs): Fix computing of benefit once giv is combined.
From-SVN: r45494
Diffstat (limited to 'gcc/loop.c')
-rw-r--r--gcc/loop.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/loop.c b/gcc/loop.c
index 990826a..ef1b7ee 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -6851,6 +6851,13 @@ restart:
g2->new_reg = can_combine[i * giv_count + j];
g2->same = g1;
+ /* For destination, we now may replace by mem expression instead
+ of register. This changes the costs considerably, so add the
+ compensation. */
+ if (g2->giv_type == DEST_ADDR)
+ g2->benefit = (g2->benefit + reg_address_cost
+ - address_cost (g2->new_reg,
+ GET_MODE (g2->mem)));
g1->combined_with++;
g1->lifetime += g2->lifetime;