This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Another ia64.c fix


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,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]