aboutsummaryrefslogtreecommitdiff
path: root/gcc/haifa-sched.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2003-01-17 00:00:18 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2003-01-17 00:00:18 +0000
commitcda1f7656126d203689c0b92ddb23b205cc8db0a (patch)
tree6a518c0a40b187dcecd0e59e899e3632f564f628 /gcc/haifa-sched.c
parent200097cc9a3d0355c61c8630a03e991563f91104 (diff)
downloadgcc-cda1f7656126d203689c0b92ddb23b205cc8db0a.zip
gcc-cda1f7656126d203689c0b92ddb23b205cc8db0a.tar.gz
gcc-cda1f7656126d203689c0b92ddb23b205cc8db0a.tar.bz2
haifa-sched.c (move_insn): Restore moving all schedule group.
2003-01-16 Vladimir Makarov <vmakarov@redhat.com> * haifa-sched.c (move_insn): Restore moving all schedule group. (set_priorities): Restore taking SCHED_GROUP_P into account. * sched-deps.c (add_dependence): Restore processing the last group insn. (remove_dependence, group_leader): Restore the functions. (set_sched_group_p): Restore adding dependencies from previous insn in the group. (compute_forward_dependences): Restore usage of group_leader. * sched-ebb.c (init_ready_list): Restore taking SCHED_GROUP_P into account. * sched-rgn.c (init_ready_list): Restore taking SCHED_GROUP_P into account. (can_schedule_ready_p): Ditto. (add_branch_dependences): Restore skipping over the group insns. From-SVN: r61412
Diffstat (limited to 'gcc/haifa-sched.c')
-rw-r--r--gcc/haifa-sched.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 046abc3..c6b2aab 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -1769,6 +1769,25 @@ move_insn (insn, last)
{
rtx retval = NULL;
+ /* If INSN has SCHED_GROUP_P set, then issue it and any other
+ insns with SCHED_GROUP_P set first. */
+ while (SCHED_GROUP_P (insn))
+ {
+ rtx prev = PREV_INSN (insn);
+
+ /* Move a SCHED_GROUP_P insn. */
+ move_insn1 (insn, last);
+ /* If this is the first call to reemit_notes, then record
+ its return value. */
+ if (retval == NULL_RTX)
+ retval = reemit_notes (insn, insn);
+ else
+ reemit_notes (insn, insn);
+ /* Consume SCHED_GROUP_P flag. */
+ SCHED_GROUP_P (insn) = 0;
+ insn = prev;
+ }
+
/* Now move the first non SCHED_GROUP_P insn. */
move_insn1 (insn, last);
@@ -1779,8 +1798,6 @@ move_insn (insn, last)
else
reemit_notes (insn, insn);
- SCHED_GROUP_P (insn) = 0;
-
return retval;
}
@@ -2376,7 +2393,8 @@ set_priorities (head, tail)
if (GET_CODE (insn) == NOTE)
continue;
- n_insn++;
+ if (! SCHED_GROUP_P (insn))
+ n_insn++;
(void) priority (insn);
}