diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2004-02-06 20:10:35 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2004-02-06 20:10:35 +0000 |
commit | 1f0db3dfca894ec75f6b6a9f360faa9b1253f0a1 (patch) | |
tree | 5d1d882247fd66bae6398a9890456f624b5faa40 | |
parent | 014a1138d6ff79eff9aea704d5e8ae3f58fef5d1 (diff) | |
download | gcc-1f0db3dfca894ec75f6b6a9f360faa9b1253f0a1.zip gcc-1f0db3dfca894ec75f6b6a9f360faa9b1253f0a1.tar.gz gcc-1f0db3dfca894ec75f6b6a9f360faa9b1253f0a1.tar.bz2 |
loop.c (force_movables): Transitively increase the priorities of all insns forces by an insn...
* loop.c (force_movables): Transitively increase the priorities of
all insns forces by an insn, not just the first one.
From-SVN: r77419
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/loop.c | 12 |
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35aab6c..6853041 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-02-06 Ulrich Weigand <uweigand@de.ibm.com> + + * loop.c (force_movables): Transitively increase the priorities of + all insns forces by an insn, not just the first one. + 2004-02-06 Josef Zlomek <zlomekj@suse.cz> Daniel Berlin <dberlin@dberlin.org> @@ -1469,12 +1469,18 @@ force_movables (struct loop_movables *movables) m = 0; /* Increase the priority of the moving the first insn - since it permits the second to be moved as well. */ + since it permits the second to be moved as well. + Likewise for insns already forced by the first insn. */ if (m != 0) { + struct movable *m2; + m->forces = m1; - m1->lifetime += m->lifetime; - m1->savings += m->savings; + for (m2 = m1; m2; m2 = m2->forces) + { + m2->lifetime += m->lifetime; + m2->savings += m->savings; + } } } } |