Patch to improve ia64 compilation times

Bernd Schmidt bernds@redhat.com
Mon Apr 9 06:55:00 GMT 2001


We currently run an entirely useless scheduling pass on ia64.  This patch
disables it.

I admit I haven't bootstrapped this (our ia64 compiler is really slow and
bootstraps take a day), but I did run spec95 to verify that this doesn't
affect performance.  I won't check it in on the 3.0 branch until I've had
the time to do a bootstrap, just to make sure.


Bernd

Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/egcs/gcc/ChangeLog,v
retrieving revision 1.9740
diff -u -p -r1.9740 ChangeLog
--- ChangeLog	2001/04/09 13:10:14	1.9740
+++ ChangeLog	2001/04/09 13:48:30
@@ -1,3 +1,10 @@
+2001-04-05  Bernd Schmidt  <bernds@redhat.com>
+
+	* ia64.c (ia64_flag_schedule_insns2): New variable.
+	(ia64_override_options): Initialize it.  Clear
+	flag_schedule_insns_after_reload.
+	(ia64_reorg): Only do scheduling if ia64_flag_schedule_insns2.
+
 Mon Apr  9 15:09:13 CEST 2001  Jan Hubicka  <jh@suse.cz>

 	* i386.md (truncdfsf2_*): Add i387->int/sse reg alternatives;
Index: config/ia64/ia64.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/ia64.c,v
retrieving revision 1.87
diff -u -p -r1.87 ia64.c
--- ia64.c	2001/04/05 12:06:36	1.87
+++ ia64.c	2001/04/09 13:48:31
@@ -91,6 +91,10 @@ static const char * const ia64_output_re
 /* String used with the -mfixed-range= option.  */
 const char *ia64_fixed_range_string;

+/* Determines whether we run our final scheduling pass or not.  We always
+   avoid the normal second scheduling pass.  */
+static int ia64_flag_schedule_insns2;
+
 /* Variables which are this size or smaller are put in the sdata/sbss
    sections.  */

@@ -3715,6 +3719,9 @@ ia64_override_options ()
   if (ia64_fixed_range_string)
     fix_range (ia64_fixed_range_string);

+  ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload;
+  flag_schedule_insns_after_reload = 0;
+
   ia64_section_threshold = g_switch_set ? g_switch_value : IA64_DEFAULT_GVALUE;

   init_machine_status = ia64_init_machine_status;
@@ -6213,7 +6220,7 @@ ia64_reorg (insns)
   find_basic_blocks (insns, max_reg_num (), NULL);
   life_analysis (insns, NULL, PROP_DEATH_NOTES);

-  if (optimize)
+  if (ia64_flag_schedule_insns2)
     {
       ia64_final_schedule = 1;
       schedule_ebbs (rtl_dump_file);



More information about the Gcc-patches mailing list