aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.c9
-rw-r--r--gcc/config/i386/i386.opt4
3 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fb08101..77791a2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2015-01-23 Jan Hubicka <hubicka@ucw.cz>
+
+ * i386.opt (prefetch_sse): New targetsave.
+ * i386.c (ix86_function_specific_save): Save prefetch_sse.
+ (ix86_function_specific_restore): Restore prefetch_sse and initialize
+ ix86_cost/ix86_tune_cost.
+
2015-01-23 David Malcolm <dmalcolm@redhat.com>
* config/rs6000/rs6000.c (rs6000_output_function_epilogue):
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d10d3ff..82fc4c5 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4466,6 +4466,7 @@ ix86_function_specific_save (struct cl_target_option *ptr,
{
ptr->arch = ix86_arch;
ptr->schedule = ix86_schedule;
+ ptr->prefetch_sse = x86_prefetch_sse;
ptr->tune = ix86_tune;
ptr->branch_cost = ix86_branch_cost;
ptr->tune_defaulted = ix86_tune_defaulted;
@@ -4523,6 +4524,7 @@ ix86_function_specific_restore (struct gcc_options *opts,
ix86_arch = (enum processor_type) ptr->arch;
ix86_schedule = (enum attr_cpu) ptr->schedule;
ix86_tune = (enum processor_type) ptr->tune;
+ x86_prefetch_sse = ptr->prefetch_sse;
opts->x_ix86_branch_cost = ptr->branch_cost;
ix86_tune_defaulted = ptr->tune_defaulted;
ix86_arch_specified = ptr->arch_specified;
@@ -4553,6 +4555,13 @@ ix86_function_specific_restore (struct gcc_options *opts,
opts->x_ix86_tune_memset_strategy = ptr->x_ix86_tune_memset_strategy;
opts->x_ix86_tune_no_default = ptr->x_ix86_tune_no_default;
opts->x_ix86_veclibabi_type = ptr->x_ix86_veclibabi_type;
+ ix86_tune_cost = processor_target_table[ix86_tune].cost;
+ /* TODO: ix86_cost should be chosen at instruction or function granuality
+ so for cold code we use size_cost even in !optimize_size compilation. */
+ if (opts->x_optimize_size)
+ ix86_cost = &ix86_size_cost;
+ else
+ ix86_cost = ix86_tune_cost;
/* Recreate the arch feature tests if the arch changed */
if (old_arch != ix86_arch)
diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
index 3c3a34d..301430c 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -60,6 +60,10 @@ const char *x_ix86_tune_string
TargetSave
unsigned char schedule
+;; True if processor has SSE prefetch instruction.
+TargetSave
+unsigned char prefetch_sse
+
;; branch cost
TargetSave
unsigned char branch_cost