From 1f0db3dfca894ec75f6b6a9f360faa9b1253f0a1 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Fri, 6 Feb 2004 20:10:35 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/loop.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35aab6c99f5..68530418c5d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-02-06 Ulrich Weigand + + * 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 Daniel Berlin diff --git a/gcc/loop.c b/gcc/loop.c index 55c9834b288..911d561fd6b 100644 --- a/gcc/loop.c +++ b/gcc/loop.c @@ -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; + } } } } -- 2.30.2