diff options
-rw-r--r-- | gcc/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 14 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.opt | 6 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 52 | ||||
-rw-r--r-- | gcc/sched-int.h | 4 | ||||
-rw-r--r-- | gcc/sel-sched.c | 30 |
6 files changed, 25 insertions, 95 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d114555146d..7c169f67d17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,19 @@ 2014-05-22 Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> + Remove IA64 speculation tweaking flags + * config/ia64/ia64.c (ia64_set_sched_flags): Delete handling of + speculation tuning flags. + (msched-prefer-non-data-spec-insns,) + (msched-prefer-non-control-spec-insns): Obsolete options. + * haifa-sched.c (choose_ready): Remove handling of + PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC. + * sched-int.h (enum SPEC_SCHED_FLAGS): Remove PREFER_NON_CONTROL_SPEC + and PREFER_NON_DATA_SPEC. + * sel-sched.c (process_spec_exprs): Remove handling of + PREFER_NON_CONTROL_SPEC and PREFER_NON_DATA_SPEC. + +2014-05-22 Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org> + Improve scheduling debug output * haifa-sched.c (debug_ready_list): Remove unnecessary prototype. (advance_one_cycle): Update. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index e1dd86adc0b..7118146998a 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -7943,17 +7943,9 @@ ia64_set_sched_flags (spec_info_t spec_info) spec_info->flags = 0; - if ((mask & DATA_SPEC) && mflag_sched_prefer_non_data_spec_insns) - spec_info->flags |= PREFER_NON_DATA_SPEC; - - if (mask & CONTROL_SPEC) - { - if (mflag_sched_prefer_non_control_spec_insns) - spec_info->flags |= PREFER_NON_CONTROL_SPEC; - - if (sel_sched_p () && mflag_sel_sched_dont_check_control_spec) - spec_info->flags |= SEL_SCHED_SPEC_DONT_CHECK_CONTROL; - } + if ((mask & CONTROL_SPEC) + && sel_sched_p () && mflag_sel_sched_dont_check_control_spec) + spec_info->flags |= SEL_SCHED_SPEC_DONT_CHECK_CONTROL; if (sched_verbose >= 1) spec_info->dump = sched_dump; diff --git a/gcc/config/ia64/ia64.opt b/gcc/config/ia64/ia64.opt index 0fd43922685..60577a1528d 100644 --- a/gcc/config/ia64/ia64.opt +++ b/gcc/config/ia64/ia64.opt @@ -164,12 +164,10 @@ Target Report Var(mflag_sched_spec_control_ldc) Init(0) Use simple data speculation check for control speculation msched-prefer-non-data-spec-insns -Target Report Var(mflag_sched_prefer_non_data_spec_insns) Init(0) -If set, data speculative instructions will be chosen for schedule only if there are no other choices at the moment +Target Ignore Warn(switch %qs is no longer supported) msched-prefer-non-control-spec-insns -Target Report Var(mflag_sched_prefer_non_control_spec_insns) Init(0) -If set, control speculative instructions will be chosen for schedule only if there are no other choices at the moment +Target Ignore Warn(switch %qs is no longer supported) msched-count-spec-in-critical-path Target Report Var(mflag_sched_count_spec_in_critical_path) Init(0) diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c index c57093b7f66..f39c0476f00 100644 --- a/gcc/haifa-sched.c +++ b/gcc/haifa-sched.c @@ -5567,9 +5567,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p, else { /* Try to choose the better insn. */ - int index = 0, i, n; + int index = 0, i; rtx insn; - int try_data = 1, try_control = 1; ds_t ts; insn = ready_element (ready, 0); @@ -5579,43 +5578,10 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p, return 0; } - if (spec_info - && spec_info->flags & (PREFER_NON_DATA_SPEC - | PREFER_NON_CONTROL_SPEC)) - { - for (i = 0, n = ready->n_ready; i < n; i++) - { - rtx x; - ds_t s; - - x = ready_element (ready, i); - s = TODO_SPEC (x); - - if (spec_info->flags & PREFER_NON_DATA_SPEC - && !(s & DATA_SPEC)) - { - try_data = 0; - if (!(spec_info->flags & PREFER_NON_CONTROL_SPEC) - || !try_control) - break; - } - - if (spec_info->flags & PREFER_NON_CONTROL_SPEC - && !(s & CONTROL_SPEC)) - { - try_control = 0; - if (!(spec_info->flags & PREFER_NON_DATA_SPEC) || !try_data) - break; - } - } - } - ts = TODO_SPEC (insn); if ((ts & SPECULATIVE) - && (((!try_data && (ts & DATA_SPEC)) - || (!try_control && (ts & CONTROL_SPEC))) - || (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec - && !targetm.sched + && (targetm.sched.first_cycle_multipass_dfa_lookahead_guard_spec + && (!targetm.sched .first_cycle_multipass_dfa_lookahead_guard_spec (insn)))) /* Discard speculative instruction that stands first in the ready list. */ @@ -5624,16 +5590,8 @@ choose_ready (struct ready_list *ready, bool first_cycle_insn_p, return 1; } - ready_try[0] = 0; - - for (i = 1; i < ready->n_ready; i++) - { - insn = ready_element (ready, i); - - ready_try [i] - = ((!try_data && (TODO_SPEC (insn) & DATA_SPEC)) - || (!try_control && (TODO_SPEC (insn) & CONTROL_SPEC))); - } + for (i = 0; i < ready->n_ready; i++) + ready_try [i] = 0; /* Let the target filter the search space. */ for (i = 1; i < ready->n_ready; i++) diff --git a/gcc/sched-int.h b/gcc/sched-int.h index d04bf0876b1..6e024c29f42 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -1141,9 +1141,7 @@ enum SCHED_FLAGS { enum SPEC_SCHED_FLAGS { COUNT_SPEC_IN_CRITICAL_PATH = 1, - PREFER_NON_DATA_SPEC = COUNT_SPEC_IN_CRITICAL_PATH << 1, - PREFER_NON_CONTROL_SPEC = PREFER_NON_DATA_SPEC << 1, - SEL_SCHED_SPEC_DONT_CHECK_CONTROL = PREFER_NON_CONTROL_SPEC << 1 + SEL_SCHED_SPEC_DONT_CHECK_CONTROL = COUNT_SPEC_IN_CRITICAL_PATH << 1 }; #define NOTE_NOT_BB_P(NOTE) (NOTE_P (NOTE) && (NOTE_KIND (NOTE) \ diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index 241bdad146a..e255d62c7c3 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -3502,8 +3502,6 @@ process_pipelined_exprs (av_set_t *av_ptr) static void process_spec_exprs (av_set_t *av_ptr) { - bool try_data_p = true; - bool try_control_p = true; expr_t expr; av_set_iterator si; @@ -3529,34 +3527,6 @@ process_spec_exprs (av_set_t *av_ptr) av_set_iter_remove (&si); continue; } - - if ((spec_info->flags & PREFER_NON_DATA_SPEC) - && !(ds & BEGIN_DATA)) - try_data_p = false; - - if ((spec_info->flags & PREFER_NON_CONTROL_SPEC) - && !(ds & BEGIN_CONTROL)) - try_control_p = false; - } - - FOR_EACH_EXPR_1 (expr, si, av_ptr) - { - ds_t ds; - - ds = EXPR_SPEC_DONE_DS (expr); - - if (ds & SPECULATIVE) - { - if ((ds & BEGIN_DATA) && !try_data_p) - /* We don't want any data speculative instructions right - now. */ - av_set_iter_remove (&si); - - if ((ds & BEGIN_CONTROL) && !try_control_p) - /* We don't want any control speculative instructions right - now. */ - av_set_iter_remove (&si); - } } } |