From: Franz Sirl Date: Sun, 25 Feb 2001 00:08:01 +0000 (+0000) Subject: loop.c (check_dbra_loop): A biv has uses besides counting if it is used to set anothe... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c7b306770070affddc81bcf409e1b1420f49c35d;p=gcc.git loop.c (check_dbra_loop): A biv has uses besides counting if it is used to set another biv. 2001-02-24 Franz Sirl * loop.c (check_dbra_loop): A biv has uses besides counting if it is used to set another biv. From-SVN: r40042 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 00ce4bd4348..d363794c076 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-02-24 Franz Sirl + + * loop.c (check_dbra_loop): A biv has uses besides counting if it is + used to set another biv. + Sat Feb 24 06:45:21 2001 Richard Kenner * tree.h (BLOCK_DEAD): New macro. diff --git a/gcc/loop.c b/gcc/loop.c index 252e27eb087..7eb4d0df450 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -7259,6 +7259,7 @@ check_dbra_loop (loop, insn_count) if (bl->giv_count == 0 && ! loop->exit_count) { rtx bivreg = regno_reg_rtx[bl->regno]; + struct iv_class *blt; /* If there are no givs for this biv, and the only exit is the fall through at the end of the loop, then @@ -7295,6 +7296,14 @@ check_dbra_loop (loop, insn_count) break; } } + + /* A biv has uses besides counting if it is used to set another biv. */ + for (blt = ivs->list; blt; blt = blt->next) + if (blt->init_set && reg_mentioned_p (bivreg, SET_SRC (blt->init_set))) + { + no_use_except_counting = 0; + break; + } } if (no_use_except_counting)