Commit dec6909b by Richard Henderson

re PR target/26347 (hidden weak extern functions fail regardless of existence on alpha/linux)

        PR target/26347
        * config/alpha/predicates.md (local_symbolic_operand): Reject
        weak symbols.

From-SVN: r112322
parent 60fee157
2006-03-23 Richard Henderson <rth@redhat.com>
PR target/26347
* config/alpha/predicates.md (local_symbolic_operand): Reject
weak symbols.
2006-03-23 Andrew Pinski <pinskia@physics.uc.edu> 2006-03-23 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/26795 PR tree-opt/26795
...@@ -552,150 +558,150 @@ ...@@ -552,150 +558,150 @@
2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru> 2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* config/ia64/ia64.c (stops_p): Added explicit initialization. * config/ia64/ia64.c (stops_p): Added explicit initialization.
(ia64_first_cycle_multipass_dfa_lookahead_guard_spec, (ia64_first_cycle_multipass_dfa_lookahead_guard_spec,
ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn, ia64_h_i_d_extended, ia64_set_sched_flags, ia64_speculate_insn,
ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global, ia64_needs_block_p, ia64_gen_check, ia64_sched_init_global,
ia64_sched_finish_global): New static functions to implement ia64_sched_finish_global): New static functions to implement
hooks from gcc_target.sched. hooks from gcc_target.sched.
(spec_check_no, max_uid, pending_data_specs): New static variables. (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_spec_check_src_p): New static functions.
(ia64_adjust_cost): Renamed to ia64_adjust_cost_2. (ia64_adjust_cost): Renamed to ia64_adjust_cost_2.
(TARGET_SCHED_ADJUST_COST): Removed. (TARGET_SCHED_ADJUST_COST): Removed.
(TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL, (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_INIT_GLOBAL,
TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_FINISH_GLOBAL, TARGET_SCHED_H_I_D_EXTENDED,
TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
TARGET_SCHED_GEN_CHECK, TARGET_SCHED_GEN_CHECK,
TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
TARGET_SCHED_SET_SCHED_FLAGS): New macros. TARGET_SCHED_SET_SCHED_FLAGS): New macros.
(update_set_flags, group_barrier_needed, set_src_needs_barrier): (update_set_flags, group_barrier_needed, set_src_needs_barrier):
Fixed to handle speculation checks. Fixed to handle speculation checks.
(rtx_needs_barrier): Fixed to handle speculative loads and (rtx_needs_barrier): Fixed to handle speculative loads and
their checks. their checks.
(ia64_variable_issue): Added code to count speculative loads and their (ia64_variable_issue): Added code to count speculative loads and their
checks. checks.
(ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle (ia64_first_cycle_multipass_dfa_lookahead_guard): Fixed to handle
speculative loads. speculative loads.
(enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET): (enum SPEC_MODES, enum SPEC_GEN_LD_MAP, SPEC_GEN_CHECK_OFFSET):
New enumerations. New enumerations.
(SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET): (SPEC_GEN_EXTEND_OFFSET, SPEC_N, SPEC_GEN_CHECK_MUTATION_OFFSET):
New constants. New constants.
(ia64_ld_address_bypass_p): Fixed to handle speculative loads. (ia64_ld_address_bypass_p): Fixed to handle speculative loads.
(ia64_reorg): Reset stops_p to NULL after it is freed. (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. UNSPEC_LDCCLR, UNSPEC_CHKACLR, UNSPEC_CHKS): New constants.
(itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f, (itanium_class): chk_s renamed to chk_s_i. New constants: chk_s_f,
chk_a. chk_a.
(data_speculative, control_speculative, check_load): New attributes. (data_speculative, control_speculative, check_load): New attributes.
(mov<mode>_advanced, mov<mode>_speculative, (mov<mode>_advanced, mov<mode>_speculative,
mov<mode>_speculative_advanced, zero_extend<mode>di2_advanced, mov<mode>_speculative_advanced, zero_extend<mode>di2_advanced,
zero_extend<mode>di2_speculative, zero_extend<mode>di2_speculative,
zero_extend<mode>di2_speculative_advanced): New patterns for zero_extend<mode>di2_speculative_advanced): New patterns for
data and control speculative loads. data and control speculative loads.
(mov<mode>_clr, zero_extend<mode>di2_clr): New patterns for (mov<mode>_clr, zero_extend<mode>di2_clr): New patterns for
check loads. check loads.
(advanced_load_check_clr_<mode>, speculation_check_<mode>): (advanced_load_check_clr_<mode>, speculation_check_<mode>):
New pattern for data and control speculation checks. New pattern for data and control speculation checks.
(MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr, (MODE, MODE_FOR_EXTEND, output_a, output_s, output_sa, output_c_clr,
ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr, ld_reg_constr, ldc_reg_constr, chk_reg_constr, mem_constr,
reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes): reg_pred_prefix, ld_class, chka_class, chks_class, attr_yes):
Auxiliary definitions for the patterns. Auxiliary definitions for the patterns.
* config/ia64/itanium1.md (1_fldc, 1_fldpc, 1_ldc, 1_chk_s_f, 1_chk_a, * 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 1b_fldc, 1b_fldpc, 1b_ldc, 1b_chk_s_f, 1b_chk_a): New resource
constraints. constraints.
(1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition (1_fld, 1_fldp, 1_ld, 1b_fld, 1b_fldp, 1b_ld): Add a condition
for speculation. for speculation.
(1_chk_s, 1b_chk_s): Renamed to 1_chk_s_i, 1b_chk_s_i. (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, * 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): 2_chk_a, 2b_flda, 2b_fldc, 2b_fldpc, 2b_ldc, 2b_chk_s_f, 2b_chk_a):
New resource constraints. New resource constraints.
(2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition (2_fld, 2_fldp, 2_ld, 2b_fld, 2b_fldp, 2b_ld): Add a condition
for speculation. for speculation.
(2_chk_s, 2b_chk_s): Renamed to 2_chk_s_i, 2b_chk_s_i. (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, * 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-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
msched-in-control-spec, msched-ldc, msched-control-ldc, msched-in-control-spec, msched-ldc, msched-control-ldc,
msched-spec-verbose, msched-prefer-non-data-spec-insns, msched-spec-verbose, msched-prefer-non-data-spec-insns,
msched-prefer-non-control-spec-insns, msched-prefer-non-control-spec-insns,
msched-count-spec-in-critical-path): New flags to tune speculative msched-count-spec-in-critical-path): New flags to tune speculative
scheduling. scheduling.
* doc/invoke.texi (msched-br-data-spec, msched-ar-data-spec, * 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-control-spec, msched-br-in-data-spec, msched-ar-in-data-spec,
msched-in-control-spec, msched-ldc, msched-control-ldc, msched-in-control-spec, msched-ldc, msched-control-ldc,
msched-spec-verbose, msched-prefer-non-data-spec-insns, msched-spec-verbose, msched-prefer-non-data-spec-insns,
msched-prefer-non-control-spec-insns, msched-prefer-non-control-spec-insns,
msched-count-spec-in-critical-path): Document new flags. msched-count-spec-in-critical-path): Document new flags.
2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru> 2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* target.h (struct spec_info_def): New opaque declaration. * target.h (struct spec_info_def): New opaque declaration.
(struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended, (struct gcc_target.sched): New fields: adjust_cost_2, h_i_d_extended,
speculate_insn, needs_block_p, gen_check, speculate_insn, needs_block_p, gen_check,
first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags. first_cycle_multipass_dfa_lookahead_guard_spec, set_sched_flags.
* target-def.h (TARGET_SCHED_ADJUST_COST_2, * target-def.h (TARGET_SCHED_ADJUST_COST_2,
TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN, TARGET_SCHED_H_I_D_EXTENDED, TARGET_SCHED_SPECULATE_INSN,
TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK, TARGET_SCHED_NEEDS_BLOCK_P, TARGET_SCHED_GEN_CHECK,
TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in TARGET_SCHED_SET_SCHED_FLAGS): New macros to initialize fields in
gcc_target.sched. gcc_target.sched.
(TARGET_SCHED): Use new macros. (TARGET_SCHED): Use new macros.
* rtl.h (copy_DEPS_LIST_list): New prototype. * rtl.h (copy_DEPS_LIST_list): New prototype.
* sched-int.h (struct sched_info): Change signature of new_ready field, * sched-int.h (struct sched_info): Change signature of new_ready field,
adjust all initializations. New fields: add_remove_insn, 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. region_head_or_leaf_p.
(struct spec_info_def): New structure declaration. (struct spec_info_def): New structure declaration.
(spec_info_t): New typedef. (spec_info_t): New typedef.
(struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec, (struct haifa_insn_data): New fields: todo_spec, done_spec, check_spec,
recovery_block, orig_pat. recovery_block, orig_pat.
(glat_start, glat_end): New variables declaraions. (glat_start, glat_end): New variables declaraions.
(TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT): (TODO_SPEC, DONE_SPEC, CHECK_SPEC, RECOVERY_BLOCK, ORIG_PAT):
New access macros. New access macros.
(enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB, (enum SCHED_FLAGS): New constants: SCHED_RGN, SCHED_EBB,
DETACH_LIFE_INFO, USE_GLAT. DETACH_LIFE_INFO, USE_GLAT.
(enum SPEC_SCHED_FLAGS): New enumeration. (enum SPEC_SCHED_FLAGS): New enumeration.
(NOTE_NOTE_BB_P): New macro. (NOTE_NOTE_BB_P): New macro.
(extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block, (extend_dependency_caches, xrecalloc, unlink_bb_notes, add_block,
attach_life_info, debug_spec_status, check_reg_live): New functions. attach_life_info, debug_spec_status, check_reg_live): New functions.
(get_block_head_tail): Change signature to get_ebb_head_tail, adjust (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, all uses in ddg.c, modulo-sched.c, haifa-sched.c, sched-rgn.c,
sched-ebb.c sched-ebb.c
(get_dep_weak, ds_merge): Prototype functions from sched-deps.c . (get_dep_weak, ds_merge): Prototype functions from sched-deps.c .
* ddg.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. * modulo-sched.c (get_block_head_tail): Adjust all uses.
(sms_sched_info): Initialize new fields. (sms_sched_info): Initialize new fields.
(contributes_to_priority): Removed. (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. (get_block_head_tail): Adjust all uses.
(ISSUE_POINTS): New macro. (ISSUE_POINTS): New macro.
(glat_start, glat_end): New global variables. (glat_start, glat_end): New global variables.
(spec_info_var, spec_info, added_recovery_block_p, nr_begin_data, (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, nr_be_in_data, nr_begin_control, nr_be_in_control, bb_header,
old_last_basic_block, before_recovery, current_sched_info_var, old_last_basic_block, before_recovery, current_sched_info_var,
rgn_n_insns, luid): New static variables. rgn_n_insns, luid): New static variables.
(insn_cost1): New function. Move logic from insn_cost to here. (insn_cost1): New function. Move logic from insn_cost to here.
(find_insn_reg_weight1): New function. Move logic from (find_insn_reg_weight1): New function. Move logic from
find_insn_reg_weight to here. find_insn_reg_weight to here.
(reemit_notes, move_insn, max_issue): Change signature. (reemit_notes, move_insn, max_issue): Change signature.
(move_insn1): Removed. (move_insn1): Removed.
(extend_h_i_d, extend_ready, extend_global, extend_all, init_h_i_d, (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 extend_bb): New static functions to support extension of scheduler's
data structures. data structures.
(generate_recovery_code, process_insn_depend_be_in_spec, (generate_recovery_code, process_insn_depend_be_in_spec,
begin_speculative_block, add_to_speculative_block, begin_speculative_block, add_to_speculative_block,
init_before_recovery, create_recovery_block, create_check_block_twin, init_before_recovery, create_recovery_block, create_check_block_twin,
fix_recovery_deps): New static functions to support fix_recovery_deps): New static functions to support
generation of recovery code. generation of recovery code.
(fix_jump_move, find_fallthru_edge, dump_new_block_header, (fix_jump_move, find_fallthru_edge, dump_new_block_header,
restore_bb_notes, move_block_after_check, move_succs): New static restore_bb_notes, move_block_after_check, move_succs): New static
functions to support ebb scheduling. functions to support ebb scheduling.
(init_glat, init_glat1, attach_life_info1, free_glat): New static (init_glat, init_glat1, attach_life_info1, free_glat): New static
functions to support handling of register live information. functions to support handling of register live information.
(associate_line_notes_with_blocks, change_pattern, speculate_insn, (associate_line_notes_with_blocks, change_pattern, speculate_insn,
sched_remove_insn, clear_priorities, calc_priorities, bb_note, sched_remove_insn, clear_priorities, calc_priorities, bb_note,
add_jump_dependencies): New static functions. 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. consistancy checking.
(debug_spec_status): New function to call from debugger. (debug_spec_status): New function to call from debugger.
(priority): Added code to handle speculation checks. (priority): Added code to handle speculation checks.
...@@ -703,76 +709,76 @@ ...@@ -703,76 +709,76 @@
(schedule_insn): Added code to handle speculation checks. (schedule_insn): Added code to handle speculation checks.
(unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes): (unlink_other_notes, rm_line_notes, restore_line_notes, rm_other_notes):
Fixed to handle ebbs. 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. (max_issue): Added code to use ISSUE_POINTS of instructions.
(choose_ready): Added code to choose between speculative and (choose_ready): Added code to choose between speculative and
non-speculative instructions. non-speculative instructions.
(schedule_block): Added code to handle ebb scheduling and scheduling of (schedule_block): Added code to handle ebb scheduling and scheduling of
speculative instructions. speculative instructions.
(sched_init): Initialize new variables. (sched_init): Initialize new variables.
(sched_finish): Free new variables. Print statistics. (sched_finish): Free new variables. Print statistics.
(try_ready): Added code to handle speculative instructions. (try_ready): Added code to handle speculative instructions.
* lists.c (copy_DEPS_LIST_list): New function. * lists.c (copy_DEPS_LIST_list): New function.
* sched-deps.c (extend_dependency_caches): New function. Move logic * sched-deps.c (extend_dependency_caches): New function. Move logic
from create_dependency_caches to here. from create_dependency_caches to here.
(get_dep_weak, ds_merge): Make global. (get_dep_weak, ds_merge): Make global.
* genattr.c (main): Code to output prototype for * genattr.c (main): Code to output prototype for
dfa_clear_single_insn_cache. dfa_clear_single_insn_cache.
* genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros. * genautomata.c (DFA_CLEAR_SINGLE_INSN_CACHE_FUNC_NAME): New macros.
(output_dfa_clean_insn_cache_func): Code to output (output_dfa_clean_insn_cache_func): Code to output
dfa_clear_single_insn_cache function. dfa_clear_single_insn_cache function.
* sched-ebb.c (target_n_insns): Remove. Adjust all users to use * sched-ebb.c (target_n_insns): Remove. Adjust all users to use
n_insns. n_insns.
(can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs): (can_schedule_ready_p, fix_basic_block_boundaries, add_missing_bbs):
Removed. Removed.
(n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb): (n_insns, dont_calc_deps, ebb_head, ebb_tail, last_bb):
New static variables. New static variables.
(begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb, (begin_schedule_ready, add_remove_insn, add_block1, advance_target_bb,
fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from fix_recovery_cfg, ebb_head_or_leaf_p): Implement hooks from
struct sched_info. struct sched_info.
(ebb_sched_info): Initialize new fields. (ebb_sched_info): Initialize new fields.
(get_block_head_tail): Adjust all uses. (get_block_head_tail): Adjust all uses.
(compute_jump_reg_dependencies): Fixed to use glat_start. (compute_jump_reg_dependencies): Fixed to use glat_start.
(schedule_ebb): Code to remove unreachable last block. (schedule_ebb): Code to remove unreachable last block.
(schedule_ebbs): Added code to update register live information. (schedule_ebbs): Added code to update register live information.
* sched-rgn.c (region_sched_info): Initialize new fields. * sched-rgn.c (region_sched_info): Initialize new fields.
(get_block_head_tail): Adjust all uses. (get_block_head_tail): Adjust all uses.
(last_was_jump): Removed. Adjust users. (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): add_block1, fix_recovery_cfg, advance_target_bb, region_head_or_leaf_p):
Implement new hooks. Implement new hooks.
(check_dead_notes1): New static function. (check_dead_notes1): New static function.
(struct region): New fields: dont_calc_deps, has_real_ebb. (struct region): New fields: dont_calc_deps, has_real_ebb.
(RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros. (RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB): New access macros.
(BB_TO_BLOCK): Fixed to handle EBBs. (BB_TO_BLOCK): Fixed to handle EBBs.
(EBB_FIRST_BB, EBB_LAST_BB): New macros. (EBB_FIRST_BB, EBB_LAST_BB): New macros.
(ebb_head): New static variable. (ebb_head): New static variable.
(debug_regions, contributes_to_priority): Fixed to handle EBBs. (debug_regions, contributes_to_priority): Fixed to handle EBBs.
(find_single_block_regions, find_rgns, find_more_rgns): Initialize (find_single_block_regions, find_rgns, find_more_rgns): Initialize
new fields. new fields.
(compute_dom_prob_ps): New assertion. (compute_dom_prob_ps): New assertion.
(check_live_1, update_live_1): Fixed to work with glat_start instead of (check_live_1, update_live_1): Fixed to work with glat_start instead of
global_live_at_start. global_live_at_start.
(init_ready_list): New assertions. (init_ready_list): New assertions.
(can_schedule_ready_p): Split update code to begin_schedule_ready. (can_schedule_ready_p): Split update code to begin_schedule_ready.
(new_ready): Add support for BEGIN_CONTROL speculation. (new_ready): Add support for BEGIN_CONTROL speculation.
(schedule_insns): Fixed code that updates register live information (schedule_insns): Fixed code that updates register live information
to handle EBBs. to handle EBBs.
(schedule_region): Fixed to handle EBBs. (schedule_region): Fixed to handle EBBs.
(init_regions): Use extend_regions and check_dead_notes1. (init_regions): Use extend_regions and check_dead_notes1.
* params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY, * params.def (PARAM_MAX_SCHED_INSN_CONFLICT_DELAY,
PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters. PARAM_SCHED_SPEC_PROB_CUTOFF): New parameters.
* doc/tm.texi (TARGET_SCHED_ADJUST_COST_2, TARGET_SCHED_H_I_D_EXTENDED, * 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_SPECULATE_INSN, TARGET_SCHED_NEEDS_BLOCK_P,
TARGET_SCHED_GEN_CHECK, TARGET_SCHED_GEN_CHECK,
TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC,
TARGET_SCHED_SET_SCHED_FLAGS): Document. 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. sched-spec-prob-cutoff): Document.
2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru> 2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
* 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. inter_tick, queue_index.
(struct sched_info): Change signature of init_ready_list field. (struct sched_info): Change signature of init_ready_list field.
Adjust all initializations. Adjust all initializations.
...@@ -823,60 +829,60 @@ ...@@ -823,60 +829,60 @@
(gather_region_statistics, print_region_statistics): New static (gather_region_statistics, print_region_statistics): New static
functions. functions.
* params.def (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS): New parameter. * 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 <mkuvyrkov@ispras.ru> 2006-03-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
Andrey Belevantsev <abel@ispras.ru> Andrey Belevantsev <abel@ispras.ru>
* ddg.c (build_intra_loop_deps): Adjust add_forward_dependence call. * 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 (free_list): Add assertions to verify the proper distinguishing
between INSN_LISTs and DEPS_LISTs. between INSN_LISTs and DEPS_LISTs.
(find_list_elem, remove_list_elem, remove_list_node): New static (find_list_elem, remove_list_elem, remove_list_node): New static
functions. functions.
(alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node, (alloc_DEPS_LIST, free_DEPS_LIST, free_DEPS_LIST_node,
remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem, remove_free_INSN_LIST_elem, remove_free_DEPS_LIST_elem,
remove_free_INSN_LIST_node, remove_free_DEPS_LIST_node): New functions. 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_INSN_LIST): Assert that the list we're working on is indeed
an INSN_LIST. an INSN_LIST.
(free_INSN_LIST_node): Likewise. (free_INSN_LIST_node): Likewise.
* modulo-sched.c (current_sched_info): Initialize flags field. * modulo-sched.c (current_sched_info): Initialize flags field.
* reg-notes.def: Exchange DEP_ANTI and DEP_OUTPUT. * reg-notes.def: Exchange DEP_ANTI and DEP_OUTPUT.
* rtl.def (DEPS_LIST): Define. * rtl.def (DEPS_LIST): Define.
* rtl.h: Declare new functions from lists.c. * rtl.h: Declare new functions from lists.c.
* sched-deps.c (spec_dependency_cache): New static variable. * sched-deps.c (spec_dependency_cache): New static variable.
(maybe_add_or_update_back_dep_1, add_back_dep): New static functions. (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_dependence): Change return type to void. Move the logic to ...
(add_or_update_back_dep_1): ... here. Handle speculative dependencies. (add_or_update_back_dep_1): ... here. Handle speculative dependencies.
(delete_all_dependences): Add comment about forward_dependency_cache. (delete_all_dependences): Add comment about forward_dependency_cache.
Handle spec_dependency_cache. Handle DEPS_LISTs. Handle spec_dependency_cache. Handle DEPS_LISTs.
(fixup_sched_groups): Clarify the change of priority of output (fixup_sched_groups): Clarify the change of priority of output
and anti dependencies. and anti dependencies.
(sched_analyze_2): Adjust add_dependence calls to create data (sched_analyze_2): Adjust add_dependence calls to create data
speculative dependence. 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. 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. presence of speculation.
(init_dependency_caches, free_dependency_caches): (init_dependency_caches, free_dependency_caches):
Handle spec_dependency_cache. 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): estimate_dep_weak, get_dep_weak, ds_merge, check_dep_status):
New static functions. 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. add_back_forw_dep, delete_back_forw_dep): New functions.
* sched-int.h (ds_t, dw_t): New typedefs. * sched-int.h (ds_t, dw_t): New typedefs.
(struct sched_info): Add new field flags. (struct sched_info): Add new field flags.
(struct haifa_insn_data): Add new bitfield has_internal_dep. (struct haifa_insn_data): Add new bitfield has_internal_dep.
Prototype new sched-deps.c functions. 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, (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, 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, BEGIN_CONTROL, BE_IN_CONTROL, BEGIN_SPEC, DATA_SPEC, CONTROL_SPEC,
SPECULATIVE, BE_IN_SPEC, FIRST_SPEC_TYPE, LAST_SPEC_TYPE, SPECULATIVE, BE_IN_SPEC, FIRST_SPEC_TYPE, LAST_SPEC_TYPE,
SPEC_TYPE_SHIFT, DEP_TRUE, DEP_OUTPUT, DEP_ANTI, DEP_TYPES, HARD_DEP): SPEC_TYPE_SHIFT, DEP_TRUE, DEP_OUTPUT, DEP_ANTI, DEP_TYPES, HARD_DEP):
New constants. 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. New enums.
* sched-rgn.c (current_sched_info): Initialize flags field. * sched-rgn.c (current_sched_info): Initialize flags field.
(schedule_insns): Initialize current_sched_info before the sched_init (schedule_insns): Initialize current_sched_info before the sched_init
......
...@@ -338,7 +338,9 @@ ...@@ -338,7 +338,9 @@
if (GET_CODE (op) != SYMBOL_REF) if (GET_CODE (op) != SYMBOL_REF)
return 0; 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 ;; Return true if OP is a SYMBOL_REF or CONST referencing a variable
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment