From f3c616bc23617303b5659f2fd92ae6ab2c5d13d9 Mon Sep 17 00:00:00 2001 From: rth Date: Thu, 23 Mar 2006 15:49:00 +0000 Subject: [PATCH] PR target/26347 * config/alpha/predicates.md (local_symbolic_operand): Reject weak symbols. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112322 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 356 +++++++++++++++++++++-------------------- gcc/config/alpha/predicates.md | 4 +- 2 files changed, 184 insertions(+), 176 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3431ed81719..600619cb2c3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-03-23 Richard Henderson + + PR target/26347 + * config/alpha/predicates.md (local_symbolic_operand): Reject + weak symbols. + 2006-03-23 Andrew Pinski PR tree-opt/26795 @@ -552,150 +558,150 @@ 2006-03-16 Maxim Kuvyrkov - * config/ia64/ia64.c (stops_p): Added explicit initialization. - (ia64_first_cycle_multipass_dfa_lookahead_guard_spec, - ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn, - ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global, + * config/ia64/ia64.c (stops_p): Added explicit initialization. + (ia64_first_cycle_multipass_dfa_lookahead_guard_spec, + ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn, + ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global, ia64_sched_finish_global): New static functions to implement hooks from gcc_target.sched. (spec_check_no, max_uid, pending_data_specs): New static variables. - (ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p, + (ia64_mode_to_int, ia64_gen_spec_insn, ia64_spec_check_p, ia64_spec_check_src_p): New static functions. - (ia64_adjust_cost): Renamed to ia64_adjust_cost_2. - (TARGET_SCHED_ADJUST_COST): Removed. - (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL, + (ia64_adjust_cost): Renamed to ia64_adjust_cost_2. + (TARGET_SCHED_ADJUST_COST): Removed. + (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL, TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, - TARGET_SCHED_SET_SCHED_FLAGS): New macros. - (update_set_flags, group_barrier_needed, set_src_needs_barrier): + TARGET_SCHED_SET_SCHED_FLAGS): New macros. + (update_set_flags, group_barrier_needed, set_src_needs_barrier): Fixed to handle speculation checks. - (rtx_needs_barrier): Fixed to handle speculative loads and - their checks. - (ia64_variable_issue): Added code to count speculative loads and their - checks. - (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle - speculative loads. - (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): - New enumerations. - (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET): - New constants. - (ia64_ld_address_bypass_p): Fixed to handle speculative loads. + (rtx_needs_barrier): Fixed to handle speculative loads and + their checks. + (ia64_variable_issue): Added code to count speculative loads and their + checks. + (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle + speculative loads. + (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): + New enumerations. + (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET): + New constants. + (ia64_ld_address_bypass_p): Fixed to handle speculative loads. (ia64_reorg): Reset stops_p to NULL after it is freed. - * config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA, + * config/ia64/ia64.md (UNSPEC_LDA, UNSPEC_LDS, UNSPEC_LDSA, UNSPEC_LDCCLR, UNSPEC_CHKACLR, UNSPEC_CHKS): New constants. - (itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f, - chk_a. - (data_speculative, control_speculative, check_load): New attributes. - (mov_advanced, mov_speculative, - mov_speculative_advanced, zero_extenddi2_advanced, - zero_extenddi2_speculative, - zero_extenddi2_speculative_advanced): New patterns for - data and control speculative loads. - (mov_clr, zero_extenddi2_clr): New patterns for - check loads. - (advanced_load_check_clr_, speculation_check_): - New pattern for data and control speculation checks. + (itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f, + chk_a. + (data_speculative, control_speculative, check_load): New attributes. + (mov_advanced, mov_speculative, + mov_speculative_advanced, zero_extenddi2_advanced, + zero_extenddi2_speculative, + zero_extenddi2_speculative_advanced): New patterns for + data and control speculative loads. + (mov_clr, zero_extenddi2_clr): New patterns for + check loads. + (advanced_load_check_clr_, speculation_check_): + New pattern for data and control speculation checks. (MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr, ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr, reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes): Auxiliary definitions for the patterns. - * config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a, - 1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource - constraints. + * config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a, + 1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource + constraints. (1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition - for speculation. - (1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i. - * config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f, + for speculation. + (1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i. + * config/ia64/itanium2.md (2_flda, 2_fldc, 2_fldpc, 2_ldc, 2_chk_s_f, 2_chk_a, 2b_flda, 2b_fldc, 2b_fldpc, 2b_ldc, 2b_chk_s_f, 2b_chk_a): New resource constraints. (2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition - for speculation. - (2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i. - * config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec, - msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, - msched-in-control-spec, msched-ldc, msched-control-ldc, - msched-spec-verbose, msched-prefer-non-data-spec-insns, - msched-prefer-non-control-spec-insns, + for speculation. + (2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i. + * config/ia64/ia64.opt (msched-br-data-spec, msched-ar-data-spec, + msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, + msched-in-control-spec, msched-ldc, msched-control-ldc, + msched-spec-verbose, msched-prefer-non-data-spec-insns, + msched-prefer-non-control-spec-insns, msched-count-spec-in-critical-path): New flags to tune speculative scheduling. * doc/invoke.texi (msched-br-data-spec, msched-ar-data-spec, - msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, - msched-in-control-spec, msched-ldc, msched-control-ldc, - msched-spec-verbose, msched-prefer-non-data-spec-insns, - msched-prefer-non-control-spec-insns, + msched-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec, + msched-in-control-spec, msched-ldc, msched-control-ldc, + msched-spec-verbose, msched-prefer-non-data-spec-insns, + msched-prefer-non-control-spec-insns, msched-count-spec-in-critical-path): Document new flags. 2006-03-16 Maxim Kuvyrkov - * target.h (struct spec_info_def): New opaque declaration. - (struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended, - speculate_insn, needs_block_p, gen_check, - first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags. - * target-def.h (TARGET_SCHED_ADJUST_COST_2, - TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, - TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, - TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, - TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in - gcc_target.sched. - (TARGET_SCHED): Use new macros. - * rtl.h (copy_DEPS_LIST_list): New prototype. - * sched-int.h (struct sched_info): Change signature of new_ready field, + * target.h (struct spec_info_def): New opaque declaration. + (struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended, + speculate_insn, needs_block_p, gen_check, + first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags. + * target-def.h (TARGET_SCHED_ADJUST_COST_2, + TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, + TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, + TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, + TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in + gcc_target.sched. + (TARGET_SCHED): Use new macros. + * rtl.h (copy_DEPS_LIST_list): New prototype. + * sched-int.h (struct sched_info): Change signature of new_ready field, adjust all initializations. New fields: add_remove_insn, - begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg, + begin_schedule_ready, add_block, advance_target_bb, fix_recovery_cfg, region_head_or_leaf_p. - (struct spec_info_def): New structure declaration. - (spec_info_t): New typedef. - (struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec, - recovery_block, orig_pat. - (glat_start, glat_end): New variables declaraions. - (TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT): + (struct spec_info_def): New structure declaration. + (spec_info_t): New typedef. + (struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec, + recovery_block, orig_pat. + (glat_start, glat_end): New variables declaraions. + (TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT): New access macros. - (enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB, - DETACH_LIFE_INFO, USE_GLAT. - (enum SPEC_SCHED_FLAGS): New enumeration. - (NOTE_NOTE_BB_P): New macro. - (extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block, - attach_life_info, debug_spec_status, check_reg_live): New functions. - (get_block_head_tail): Change signature to get_ebb_head_tail, adjust - all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c, - sched-ebb.c + (enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB, + DETACH_LIFE_INFO, USE_GLAT. + (enum SPEC_SCHED_FLAGS): New enumeration. + (NOTE_NOTE_BB_P): New macro. + (extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block, + attach_life_info, debug_spec_status, check_reg_live): New functions. + (get_block_head_tail): Change signature to get_ebb_head_tail, adjust + all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c, + sched-ebb.c (get_dep_weak, ds_merge): Prototype functions from sched-deps.c . - * ddg.c (get_block_head_tail): Adjust all uses. - * modulo-sched.c (get_block_head_tail): Adjust all uses. + * ddg.c (get_block_head_tail): Adjust all uses. + * modulo-sched.c (get_block_head_tail): Adjust all uses. (sms_sched_info): Initialize new fields. (contributes_to_priority): Removed. - * haifa-sched.c (params.h): New include. + * haifa-sched.c (params.h): New include. (get_block_head_tail): Adjust all uses. - (ISSUE_POINTS): New macro. - (glat_start, glat_end): New global variables. - (spec_info_var, spec_info, added_recovery_block_p, nr_begin_data, + (ISSUE_POINTS): New macro. + (glat_start, glat_end): New global variables. + (spec_info_var, spec_info, added_recovery_block_p, nr_begin_data, nr_be_in_data, nr_begin_control, nr_be_in_control, bb_header, old_last_basic_block, before_recovery, current_sched_info_var, rgn_n_insns, luid): New static variables. - (insn_cost1): New function. Move logic from insn_cost to here. - (find_insn_reg_weight1): New function. Move logic from - find_insn_reg_weight to here. - (reemit_notes, move_insn, max_issue): Change signature. - (move_insn1): Removed. - (extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d, - extend_bb): New static functions to support extension of scheduler's - data structures. - (generate_recovery_code, process_insn_depend_be_in_spec, - begin_speculative_block, add_to_speculative_block, - init_before_recovery, create_recovery_block, create_check_block_twin, - fix_recovery_deps): New static functions to support - generation of recovery code. - (fix_jump_move, find_fallthru_edge, dump_new_block_header, - restore_bb_notes, move_block_after_check, move_succs): New static - functions to support ebb scheduling. - (init_glat, init_glat1, attach_life_info1, free_glat): New static - functions to support handling of register live information. - (associate_line_notes_with_blocks, change_pattern, speculate_insn, + (insn_cost1): New function. Move logic from insn_cost to here. + (find_insn_reg_weight1): New function. Move logic from + find_insn_reg_weight to here. + (reemit_notes, move_insn, max_issue): Change signature. + (move_insn1): Removed. + (extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d, + extend_bb): New static functions to support extension of scheduler's + data structures. + (generate_recovery_code, process_insn_depend_be_in_spec, + begin_speculative_block, add_to_speculative_block, + init_before_recovery, create_recovery_block, create_check_block_twin, + fix_recovery_deps): New static functions to support + generation of recovery code. + (fix_jump_move, find_fallthru_edge, dump_new_block_header, + restore_bb_notes, move_block_after_check, move_succs): New static + functions to support ebb scheduling. + (init_glat, init_glat1, attach_life_info1, free_glat): New static + functions to support handling of register live information. + (associate_line_notes_with_blocks, change_pattern, speculate_insn, sched_remove_insn, clear_priorities, calc_priorities, bb_note, add_jump_dependencies): New static functions. - (check_cfg, has_edge_p, check_sched_flags): New static functions for + (check_cfg, has_edge_p, check_sched_flags): New static functions for consistancy checking. (debug_spec_status): New function to call from debugger. (priority): Added code to handle speculation checks. @@ -703,76 +709,76 @@ (schedule_insn): Added code to handle speculation checks. (unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes): Fixed to handle ebbs. - (move_insn): Added code to handle ebb scheduling. + (move_insn): Added code to handle ebb scheduling. (max_issue): Added code to use ISSUE_POINTS of instructions. - (choose_ready): Added code to choose between speculative and - non-speculative instructions. - (schedule_block): Added code to handle ebb scheduling and scheduling of - speculative instructions. - (sched_init): Initialize new variables. - (sched_finish): Free new variables. Print statistics. - (try_ready): Added code to handle speculative instructions. - * lists.c (copy_DEPS_LIST_list): New function. - * sched-deps.c (extend_dependency_caches): New function. Move logic - from create_dependency_caches to here. + (choose_ready): Added code to choose between speculative and + non-speculative instructions. + (schedule_block): Added code to handle ebb scheduling and scheduling of + speculative instructions. + (sched_init): Initialize new variables. + (sched_finish): Free new variables. Print statistics. + (try_ready): Added code to handle speculative instructions. + * lists.c (copy_DEPS_LIST_list): New function. + * sched-deps.c (extend_dependency_caches): New function. Move logic + from create_dependency_caches to here. (get_dep_weak, ds_merge): Make global. - * genattr.c (main): Code to output prototype for - dfa_clear_single_insn_cache. - * genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros. - (output_dfa_clean_insn_cache_func): Code to output - dfa_clear_single_insn_cache function. - * sched-ebb.c (target_n_insns): Remove. Adjust all users to use + * genattr.c (main): Code to output prototype for + dfa_clear_single_insn_cache. + * genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros. + (output_dfa_clean_insn_cache_func): Code to output + dfa_clear_single_insn_cache function. + * sched-ebb.c (target_n_insns): Remove. Adjust all users to use n_insns. - (can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs): - Removed. - (n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb): - New static variables. - (begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb, + (can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs): + Removed. + (n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb): + New static variables. + (begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb, fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from struct sched_info. - (ebb_sched_info): Initialize new fields. + (ebb_sched_info): Initialize new fields. (get_block_head_tail): Adjust all uses. (compute_jump_reg_dependencies): Fixed to use glat_start. (schedule_ebb): Code to remove unreachable last block. - (schedule_ebbs): Added code to update register live information. - * sched-rgn.c (region_sched_info): Initialize new fields. + (schedule_ebbs): Added code to update register live information. + * sched-rgn.c (region_sched_info): Initialize new fields. (get_block_head_tail): Adjust all uses. (last_was_jump): Removed. Adjust users. - (begin_schedule_ready, add_remove_insn, insn_points, extend_regions, + (begin_schedule_ready, add_remove_insn, insn_points, extend_regions, add_block1, fix_recovery_cfg, advance_target_bb, region_head_or_leaf_p): Implement new hooks. - (check_dead_notes1): New static function. - (struct region): New fields: dont_calc_deps, has_real_ebb. - (RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros. - (BB_TO_BLOCK): Fixed to handle EBBs. - (EBB_FIRST_BB, EBB_LAST_BB): New macros. - (ebb_head): New static variable. - (debug_regions, contributes_to_priority): Fixed to handle EBBs. - (find_single_block_regions, find_rgns, find_more_rgns): Initialize + (check_dead_notes1): New static function. + (struct region): New fields: dont_calc_deps, has_real_ebb. + (RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros. + (BB_TO_BLOCK): Fixed to handle EBBs. + (EBB_FIRST_BB, EBB_LAST_BB): New macros. + (ebb_head): New static variable. + (debug_regions, contributes_to_priority): Fixed to handle EBBs. + (find_single_block_regions, find_rgns, find_more_rgns): Initialize new fields. (compute_dom_prob_ps): New assertion. - (check_live_1, update_live_1): Fixed to work with glat_start instead of - global_live_at_start. + (check_live_1, update_live_1): Fixed to work with glat_start instead of + global_live_at_start. (init_ready_list): New assertions. (can_schedule_ready_p): Split update code to begin_schedule_ready. (new_ready): Add support for BEGIN_CONTROL speculation. - (schedule_insns): Fixed code that updates register live information - to handle EBBs. - (schedule_region): Fixed to handle EBBs. + (schedule_insns): Fixed code that updates register live information + to handle EBBs. + (schedule_region): Fixed to handle EBBs. (init_regions): Use extend_regions and check_dead_notes1. - * params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY, - PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters. + * params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY, + PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters. * doc/tm.texi (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, TARGET_SCHED_SET_SCHED_FLAGS): Document. - * doc/invoke.texi (max-sched-insn-conflict-delay, + * doc/invoke.texi (max-sched-insn-conflict-delay, sched-spec-prob-cutoff): Document. 2006-03-16 Maxim Kuvyrkov - * sched-int.h (struct haifa_insn_data): New fields: resolved_deps, + * sched-int.h (struct haifa_insn_data): New fields: resolved_deps, inter_tick, queue_index. (struct sched_info): Change signature of init_ready_list field. Adjust all initializations. @@ -823,60 +829,60 @@ (gather_region_statistics, print_region_statistics): New static functions. * params.def (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS): New parameter. - * doc/invoke.texi (max-sched-extend-regions-iters): Document. + * doc/invoke.texi (max-sched-extend-regions-iters): Document. 2006-03-16 Maxim Kuvyrkov - Andrey Belevantsev + Andrey Belevantsev * ddg.c (build_intra_loop_deps): Adjust add_forward_dependence call. - * lists.c (unused_deps_list): New variable. + * lists.c (unused_deps_list): New variable. (free_list): Add assertions to verify the proper distinguishing - between INSN_LISTs and DEPS_LISTs. - (find_list_elem, remove_list_elem, remove_list_node): New static + between INSN_LISTs and DEPS_LISTs. + (find_list_elem, remove_list_elem, remove_list_node): New static functions. - (alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node, - remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem, - remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions. - (alloc_INSN_LIST): Assert that the list we're working on is indeed + (alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node, + remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem, + remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions. + (alloc_INSN_LIST): Assert that the list we're working on is indeed an INSN_LIST. - (free_INSN_LIST_node): Likewise. + (free_INSN_LIST_node): Likewise. * modulo-sched.c (current_sched_info): Initialize flags field. * reg-notes.def: Exchange DEP_ANTI and DEP_OUTPUT. * rtl.def (DEPS_LIST): Define. - * rtl.h: Declare new functions from lists.c. - * sched-deps.c (spec_dependency_cache): New static variable. - (maybe_add_or_update_back_dep_1, add_back_dep): New static functions. - (add_dependence): Change return type to void. Move the logic to ... - (add_or_update_back_dep_1): ... here. Handle speculative dependencies. - (delete_all_dependences): Add comment about forward_dependency_cache. + * rtl.h: Declare new functions from lists.c. + * sched-deps.c (spec_dependency_cache): New static variable. + (maybe_add_or_update_back_dep_1, add_back_dep): New static functions. + (add_dependence): Change return type to void. Move the logic to ... + (add_or_update_back_dep_1): ... here. Handle speculative dependencies. + (delete_all_dependences): Add comment about forward_dependency_cache. Handle spec_dependency_cache. Handle DEPS_LISTs. - (fixup_sched_groups): Clarify the change of priority of output - and anti dependencies. - (sched_analyze_2): Adjust add_dependence calls to create data + (fixup_sched_groups): Clarify the change of priority of output + and anti dependencies. + (sched_analyze_2): Adjust add_dependence calls to create data speculative dependence. - (add_forward_dependence): Renamed to add_forw_dep, change prototype. + (add_forward_dependence): Renamed to add_forw_dep, change prototype. Adjust all callers. Handle DEPS_LISTS. - (compute_forward_dependences): Use add_forw_dep. Sort LOG_LINKs in + (compute_forward_dependences): Use add_forw_dep. Sort LOG_LINKs in presence of speculation. - (init_dependency_caches, free_dependency_caches): + (init_dependency_caches, free_dependency_caches): Handle spec_dependency_cache. - (adjust_add_sorted_back_dep, adjust_back_add_forw_dep, delete_forw_dep, + (adjust_add_sorted_back_dep, adjust_back_add_forw_dep, delete_forw_dep, estimate_dep_weak, get_dep_weak, ds_merge, check_dep_status): New static functions. - (add_or_update_back_dep, add_or_update_back_forw_dep, + (add_or_update_back_dep, add_or_update_back_forw_dep, add_back_forw_dep, delete_back_forw_dep): New functions. * sched-int.h (ds_t, dw_t): New typedefs. (struct sched_info): Add new field flags. (struct haifa_insn_data): Add new bitfield has_internal_dep. Prototype new sched-deps.c functions. - (HAS_INTERNAL_DEP, DEP_STATUS): New access macros. + (HAS_INTERNAL_DEP, DEP_STATUS): New access macros. (BITS_PER_DEP_STATUS, BITS_PER_DEP_WEAK, DEP_WEAK_MASK, MAX_DEP_WEAK, MIN_DEP_WEAK, NO_DEP_WEAK, UNCERTAIN_DEP_WEAK, BEGIN_DATA, BE_IN_DATA, BEGIN_CONTROL, BE_IN_CONTROL, BEGIN_SPEC, DATA_SPEC, CONTROL_SPEC, SPECULATIVE, BE_IN_SPEC, FIRST_SPEC_TYPE, LAST_SPEC_TYPE, SPEC_TYPE_SHIFT, DEP_TRUE, DEP_OUTPUT, DEP_ANTI, DEP_TYPES, HARD_DEP): New constants. - (enum SPEC_TYPES_OFFSETS, enum DEPS_ADJUST_RESULT, enum SCHED_FLAGS): + (enum SPEC_TYPES_OFFSETS, enum DEPS_ADJUST_RESULT, enum SCHED_FLAGS): New enums. * sched-rgn.c (current_sched_info): Initialize flags field. (schedule_insns): Initialize current_sched_info before the sched_init diff --git a/gcc/config/alpha/predicates.md b/gcc/config/alpha/predicates.md index fc330ff12c3..a035fffd841 100644 --- a/gcc/config/alpha/predicates.md +++ b/gcc/config/alpha/predicates.md @@ -338,7 +338,9 @@ if (GET_CODE (op) != SYMBOL_REF) return 0; - return SYMBOL_REF_LOCAL_P (op) && !SYMBOL_REF_TLS_MODEL (op); + return (SYMBOL_REF_LOCAL_P (op) + && !SYMBOL_REF_WEAK (op) + && !SYMBOL_REF_TLS_MODEL (op)); }) ;; Return true if OP is a SYMBOL_REF or CONST referencing a variable -- 2.11.0