Set cache values from -mtune
authorH.J. Lu <hongjiu.lu@intel.com>
Wed, 13 Jun 2012 17:46:59 +0000 (17:46 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Wed, 13 Jun 2012 17:46:59 +0000 (10:46 -0700)
PR target/53647
* config/i386/i386.c (ix86_tune_cost): New variable.
(ix86_option_override_internal): Set ix86_tune_cost.  Use
ix86_tune_cost for simultaneous_prefetches, prefetch_block,
l1_cache_size and l2_cache_size.

From-SVN: r188523

gcc/ChangeLog
gcc/config/i386/i386.c

index 094c25b739ec30848f445074ab82a1b1cbc54351..43e53235a5345b1950105978a8b4b511c0487291 100644 (file)
@@ -1,3 +1,11 @@
+2012-06-13  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/53647
+       * config/i386/i386.c (ix86_tune_cost): New variable.
+       (ix86_option_override_internal): Set ix86_tune_cost.  Use
+       ix86_tune_cost for simultaneous_prefetches, prefetch_block,
+       l1_cache_size and l2_cache_size.
+
 2012-06-13  Richard Guenther  <rguenther@suse.de>
 
        * tree-vrp.c (vrp_meet): Properly meet equivalent ranges.
index d10bf160fe5f62cfcf1c93879450b68525a3e1c9..e2f574096ac99dbf8e54be57ef7afaf1d06707be 100644 (file)
@@ -1874,6 +1874,10 @@ struct processor_costs generic32_cost = {
   1,                                   /* cond_not_taken_branch_cost.  */
 };
 
+/* Set by -mtune.  */
+const struct processor_costs *ix86_tune_cost = &pentium_cost;
+
+/* Set by -mtune or -Os.  */
 const struct processor_costs *ix86_cost = &pentium_cost;
 
 /* Processor feature/optimization bitmasks.  */
@@ -3546,10 +3550,11 @@ ix86_option_override_internal (bool main_args_p)
        flag_pcc_struct_return = DEFAULT_PCC_STRUCT_RETURN;
     }
 
+  ix86_tune_cost = processor_target_table[ix86_tune].cost;
   if (optimize_size)
     ix86_cost = &ix86_size_cost;
   else
-    ix86_cost = processor_target_table[ix86_tune].cost;
+    ix86_cost = ix86_tune_cost;
 
   /* Arrange to set up i386_stack_locals for all functions.  */
   init_machine_status = ix86_init_machine_status;
@@ -3794,16 +3799,19 @@ ix86_option_override_internal (bool main_args_p)
     flag_schedule_insns_after_reload = flag_schedule_insns = 0;
 
   maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES,
-                        ix86_cost->simultaneous_prefetches,
+                        ix86_tune_cost->simultaneous_prefetches,
                         global_options.x_param_values,
                         global_options_set.x_param_values);
-  maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE, ix86_cost->prefetch_block,
+  maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE,
+                        ix86_tune_cost->prefetch_block,
                         global_options.x_param_values,
                         global_options_set.x_param_values);
-  maybe_set_param_value (PARAM_L1_CACHE_SIZE, ix86_cost->l1_cache_size,
+  maybe_set_param_value (PARAM_L1_CACHE_SIZE,
+                        ix86_tune_cost->l1_cache_size,
                         global_options.x_param_values,
                         global_options_set.x_param_values);
-  maybe_set_param_value (PARAM_L2_CACHE_SIZE, ix86_cost->l2_cache_size,
+  maybe_set_param_value (PARAM_L2_CACHE_SIZE,
+                        ix86_tune_cost->l2_cache_size,
                         global_options.x_param_values,
                         global_options_set.x_param_values);