From d0d7b0b3838dcaadf92d4ff339404eff140e2161 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sat, 24 Jan 2015 07:26:46 +0100 Subject: [PATCH] i386.opt (prefetch_sse): New targetsave. * 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. From-SVN: r220077 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.c | 9 +++++++++ gcc/config/i386/i386.opt | 4 ++++ 3 files changed, 20 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb08101de98..77791a2a2fe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-01-23 Jan Hubicka + + * 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 * config/rs6000/rs6000.c (rs6000_output_function_epilogue): diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index d10d3ff36cc..82fc4c56588 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 3c3a34dcb8b..301430c2380 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 -- 2.30.2