summaryrefslogtreecommitdiff
path: root/gcc/haifa-sched.c
diff options
context:
space:
mode:
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-17 00:00:18 +0000
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-17 00:00:18 +0000
commit6dff42fd775ffa01354e0fab5ce8408c4ce1266d (patch)
tree6a518c0a40b187dcecd0e59e899e3632f564f628 /gcc/haifa-sched.c
parentbbb1a791317eccd866842cb4e79b2986ca3c4619 (diff)
downloadgcc-6dff42fd775ffa01354e0fab5ce8408c4ce1266d.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61412 138bc75d-0d04-0410-961f-82ee72b054a4
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 046abc34423..c6b2aab4935 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);
}