This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Another ia64.c fix
- To: <gcc-patches at gcc dot gnu dot org>
- Subject: Another ia64.c fix
- From: Bernd Schmidt <bernds at cambridge dot redhat dot com>
- Date: Thu, 1 Mar 2001 14:27:08 +0000 (GMT)
In ia64_sched_reorder, one of the early exit paths could cause us not to
rotate a bundle when we should have done so. Fixed with this patch.
Bootstrapped on ia64-linux; applied to both mainline and branch.
Bernd
* ia64.c (ia64_sched_reorder): Move code that rotates bundles up a bit.
Index: config/ia64/ia64.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/ia64.c,v
retrieving revision 1.77
diff -u -p -r1.77 ia64.c
--- ia64.c 2001/03/01 14:20:17 1.77
+++ ia64.c 2001/03/01 14:22:46
@@ -5665,6 +5665,15 @@ ia64_sched_reorder (dump, sched_verbose,
dump_current_packet (dump);
}
+ if (reorder_type == 0)
+ {
+ if (sched_data.cur == 6)
+ rotate_two_bundles (sched_verbose ? dump : NULL);
+ else if (sched_data.cur >= 3)
+ rotate_one_bundle (sched_verbose ? dump : NULL);
+ sched_data.first_slot = sched_data.cur;
+ }
+
/* First, move all USEs, CLOBBERs and other crud out of the way. */
highest = ready[n_ready - 1];
for (insnp = ready; insnp < e_ready; insnp++)
@@ -5736,15 +5745,6 @@ ia64_sched_reorder (dump, sched_verbose,
if (deleted != nr_need_stop)
abort ();
}
- }
-
- if (reorder_type == 0)
- {
- if (sched_data.cur == 6)
- rotate_two_bundles (sched_verbose ? dump : NULL);
- else if (sched_data.cur >= 3)
- rotate_one_bundle (sched_verbose ? dump : NULL);
- sched_data.first_slot = sched_data.cur;
}
return itanium_reorder (sched_verbose ? dump : NULL,