summaryrefslogtreecommitdiff
path: root/gcc/unroll.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1997-06-24 02:47:33 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1997-06-24 02:47:33 +0000
commit6232e1731fb7fd29aae35e7c3860c93d6d206a8c (patch)
tree4dc84dda6ea0dae762348f72adeb7dfb0a47fbe7 /gcc/unroll.c
parenta166e2db76bca5982f4c7fc4ae5767709ca7ae9c (diff)
downloadgcc-6232e1731fb7fd29aae35e7c3860c93d6d206a8c.tar.gz
(find_splittable_givs): Set splittable_regs_updates to
biv_count for reduced givs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@14296 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/unroll.c')
-rw-r--r--gcc/unroll.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/unroll.c b/gcc/unroll.c
index 74e54bd9499..3f5c548994f 100644
--- a/gcc/unroll.c
+++ b/gcc/unroll.c
@@ -2971,12 +2971,19 @@ find_splittable_givs (bl, unroll_type, loop_start, loop_end, increment,
#endif
}
- /* Givs are only updated once by definition. Mark it so if this is
+ /* Unreduced givs are only updated once by definition. Reduced givs
+ are updated as many times as their biv is. Mark it so if this is
a splittable register. Don't need to do anything for address givs
where this may not be a register. */
if (GET_CODE (v->new_reg) == REG)
- splittable_regs_updates[REGNO (v->new_reg)] = 1;
+ {
+ int count = 1;
+ if (! v->ignore)
+ count = reg_biv_class[REGNO (v->src_reg)]->biv_count;
+
+ splittable_regs_updates[REGNO (v->new_reg)] = count;
+ }
result++;