final.c (*_MAX_SKIP): Use *_max_skip variables.
authorJan Hubicka <jh@suse.cz>
Sun, 11 Nov 2001 00:35:31 +0000 (01:35 +0100)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 11 Nov 2001 00:35:31 +0000 (00:35 +0000)
* final.c (*_MAX_SKIP): Use *_max_skip variables.
* flags.h (align_loops_max_skip, align_jumps_max_skip,
align_labels_max_skip): New global variables.
* toplev.c (align_loops_max_skip, align_jumps_max_skip,
align_labels_max_skip): New global variables.
(toplev_main): Set new variables.
* i386.c (override_options): Set max_skip values.

From-SVN: r46919

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/final.c
gcc/flags.h
gcc/toplev.c

index f1c1ee817c24fd5f77658c82b713516b015cfa6f..471cd3169a55e6203a14a8674c793f03bcf72ad4 100644 (file)
@@ -1,3 +1,13 @@
+Sun Nov 11 01:26:00 CET 2001  Jan Hubicka  <jh@suse.cz>
+
+       * final.c (*_MAX_SKIP): Use *_max_skip variables.
+       * flags.h (align_loops_max_skip, align_jumps_max_skip,
+       align_labels_max_skip): New global variables.
+       * toplev.c (align_loops_max_skip, align_jumps_max_skip,
+       align_labels_max_skip): New global variables.
+       (toplev_main): Set new variables.
+       * i386.c (override_options): Set max_skip values.
+
 2001-11-10  Geoffrey Keating  <geoffk@redhat.com>
 
        * doc/tm.texi (Label Output): Document ASM_OUTPUT_LABEL_REF.
index 47f8e7859f3e19a643733c66c04f1695ca4524f7..db06683ffc55a0d8cd925a206ed6e91e80d5986b 100644 (file)
@@ -796,19 +796,21 @@ override_options ()
       const int target_enable;                 /* Target flags to enable.  */
       const int target_disable;                        /* Target flags to disable.  */
       const int align_loop;                    /* Default alignments.  */
+      const int align_loop_max_skip;
       const int align_jump;
+      const int align_jump_max_skip;
       const int align_func;
       const int branch_cost;
     }
   const processor_target_table[PROCESSOR_max] =
     {
-      {&i386_cost, 0, 0, 2, 2, 2, 1},
-      {&i486_cost, 0, 0, 4, 4, 4, 1},
-      {&pentium_cost, 0, 0, -4, -4, -4, 1},
-      {&pentiumpro_cost, 0, 0, 4, -4, 4, 1},
-      {&k6_cost, 0, 0, -5, -5, 4, 1},
-      {&athlon_cost, 0, 0, 4, -4, 4, 1},
-      {&pentium4_cost, 0, 0, 2, 2, 2, 1}
+      {&i386_cost, 0, 0, 4, 3, 4, 3, 4, 1},
+      {&i486_cost, 0, 0, 16, 15, 16, 15, 16, 1},
+      {&pentium_cost, 0, 0, 16, 7, 16, 7, 16, 1},
+      {&pentiumpro_cost, 0, 0, 16, 15, 16, 7, 16, 1},
+      {&k6_cost, 0, 0, 32, 7, 32, 7, 32, 1},
+      {&athlon_cost, 0, 0, 16, 7, 64, 7, 16, 1},
+      {&pentium4_cost, 0, 0, 0, 0, 0, 0, 0, 1}
     };
 
   static struct pta
@@ -967,11 +969,19 @@ override_options ()
   /* Default align_* from the processor table.  */
 #define abs(n) (n < 0 ? -n : n)
   if (align_loops == 0)
-    align_loops = 1 << abs (processor_target_table[ix86_cpu].align_loop);
+    {
+      align_loops = processor_target_table[ix86_cpu].align_loop;
+      align_loops_max_skip = processor_target_table[ix86_cpu].align_loop_max_skip;
+    }
   if (align_jumps == 0)
-    align_jumps = 1 << abs (processor_target_table[ix86_cpu].align_jump);
+    {
+      align_jumps = processor_target_table[ix86_cpu].align_jump;
+      align_jumps_max_skip = processor_target_table[ix86_cpu].align_jump_max_skip;
+    }
   if (align_functions == 0)
-    align_functions = 1 << abs (processor_target_table[ix86_cpu].align_func);
+    {
+      align_functions = processor_target_table[ix86_cpu].align_func;
+    }
 
   /* Validate -mpreferred-stack-boundary= value, or provide default.
      The default of 128 bits is for Pentium III's SSE __m128, but we
index d94eacf2a85863105a24cf91f3c79b499858fa57..f44fd318d5bf993e813110f2c0a5ab8d192c44f2 100644 (file)
@@ -775,7 +775,7 @@ get_attr_length (insn)
 #endif
 
 #ifndef LABEL_ALIGN_MAX_SKIP
-#define LABEL_ALIGN_MAX_SKIP (align_labels-1)
+#define LABEL_ALIGN_MAX_SKIP align_labels_max_skip
 #endif
 
 #ifndef LOOP_ALIGN
@@ -783,7 +783,7 @@ get_attr_length (insn)
 #endif
 
 #ifndef LOOP_ALIGN_MAX_SKIP
-#define LOOP_ALIGN_MAX_SKIP (align_loops-1)
+#define LOOP_ALIGN_MAX_SKIP align_loops_max_skip
 #endif
 
 #ifndef LABEL_ALIGN_AFTER_BARRIER
@@ -799,7 +799,7 @@ get_attr_length (insn)
 #endif
 
 #ifndef JUMP_ALIGN_MAX_SKIP
-#define JUMP_ALIGN_MAX_SKIP (align_jumps-1)
+#define JUMP_ALIGN_MAX_SKIP align_jumps_max_skip
 #endif
 
 #ifndef ADDR_VEC_ALIGN
index 04c3ed93eaa9c5d9648d3b4e73b2533d74bf8125..e1de92237f22847c72e791f965be9a6451e51986 100644 (file)
@@ -590,10 +590,13 @@ extern int g_switch_set;
 
 extern int align_loops;
 extern int align_loops_log;
+extern int align_loops_max_skip;
 extern int align_jumps;
 extern int align_jumps_log;
+extern int align_jumps_max_skip;
 extern int align_labels;
 extern int align_labels_log;
+extern int align_labels_max_skip;
 extern int align_functions;
 extern int align_functions_log;
 
index a542f430a8a7381ebd0b70cc26f9e6cc5ad25641..84faf14b34eba84b75b42385818b0ec6253cf658 100644 (file)
@@ -924,10 +924,13 @@ int flag_renumber_insns = 1;
 
 int align_loops;
 int align_loops_log;
+int align_loops_max_skip;
 int align_jumps;
 int align_jumps_log;
+int align_jumps_max_skip;
 int align_labels;
 int align_labels_log;
+int align_labels_max_skip;
 int align_functions;
 int align_functions_log;
 
@@ -4877,11 +4880,17 @@ toplev_main (argc, argv)
   /* Set up the align_*_log variables, defaulting them to 1 if they
      were still unset.  */
   if (align_loops <= 0) align_loops = 1;
+  if (align_loops_max_skip > align_loops || !align_loops)
+    align_loops_max_skip = align_loops - 1;
   align_loops_log = floor_log2 (align_loops * 2 - 1);
   if (align_jumps <= 0) align_jumps = 1;
+  if (align_jumps_max_skip > align_jumps || !align_jumps)
+    align_jumps_max_skip = align_jumps - 1;
   align_jumps_log = floor_log2 (align_jumps * 2 - 1);
   if (align_labels <= 0) align_labels = 1;
   align_labels_log = floor_log2 (align_labels * 2 - 1);
+  if (align_labels_max_skip > align_labels || !align_labels)
+    align_labels_max_skip = align_labels - 1;
   if (align_functions <= 0) align_functions = 1;
   align_functions_log = floor_log2 (align_functions * 2 - 1);