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 /gcc/loop.c | |
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
Diffstat (limited to 'gcc/loop.c')
-rw-r--r-- | gcc/loop.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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; + } } } } |