1. 01 Sep, 2008 1 commit
    • sel-sched.h, [...]: New files. · e855c69d
      2008-08-31  Andrey Belevantsev  <abel@ispras.ru>
              Dmitry Melnik  <dm@ispras.ru>
              Dmitry Zhurikhin  <zhur@ispras.ru>
              Alexander Monakov  <amonakov@ispras.ru>
              Maxim Kuvyrkov  <maxim@codesourcery.com>
      
      	* sel-sched.h, sel-sched-dump.h, sel-sched-ir.h, sel-sched.c,
      	sel-sched-dump.c, sel-sched-ir.c: New files.
      	* Makefile.in (OBJS-common): Add selective scheduling object
      	files.
      	(sel-sched.o, sel-sched-dump.o, sel-sched-ir.o): New entries.
      	(SEL_SCHED_IR_H, SEL_SCHED_DUMP_H): New entries.
      	(sched-vis.o): Add dependency on $(INSN_ATTR_H).
      	* cfghooks.h (get_cfg_hooks, set_cfg_hooks): New prototypes.
      	* cfghooks.c (get_cfg_hooks, set_cfg_hooks): New functions.
      	(make_forwarder_block): Update loop latch if we have redirected
      	the loop latch edge.
      	* cfgloop.c (get_loop_body_in_custom_order): New function.
      	* cfgloop.h (LOOPS_HAVE_FALLTHRU_PREHEADERS): New enum field.
      	(CP_FALLTHRU_PREHEADERS): Likewise.
      	(get_loop_body_in_custom_order): Declare.
      	* cfgloopmanip.c (has_preds_from_loop): New.
      	(create_preheader): Honor CP_FALLTHRU_PREHEADERS.
      	Assert that the preheader edge will be fall thru when it is set.
      	* common.opt (fsel-sched-bookkeeping, fsel-sched-pipelining,
      	fsel-sched-pipelining-outer-loops, fsel-sched-renaming,
      	fsel-sched-substitution, fselective-scheduling): New flags.
          	* cse.c (hash_rtx_cb): New.
      	(hash_rtx): Use it.
      	* dbgcnt.def (sel_sched_cnt, sel_sched_region_cnt,
      	sel_sched_insn_cnt): New counters. 
      	* final.c (compute_alignments): Export.  Free dominance info after loop_optimizer_finalize.
      	* genattr.c (main): Output maximal_insn_latency prototype.
      	* genautomata.c (output_default_latencies): New. Factor its code from ...
      	(output_internal_insn_latency_func): ... here.
      	(output_internal_maximal_insn_latency_func): New.
      	(output_maximal_insn_latency_func): New.
      	* hard-reg-set.h (UHOST_BITS_PER_WIDE_INT): Define unconditionally.
      	(struct hard_reg_set_iterator): New.
      	(hard_reg_set_iter_init, hard_reg_set_iter_set,
      	hard_reg_set_iter_next): New functions.
      	(EXECUTE_IF_SET_IN_HARD_REG_SET): New macro.
      	* lists.c (remove_free_INSN_LIST_node,
      	remove_free_EXPR_LIST_node): New functions.
      	* loop-init.c (loop_optimizer_init): When LOOPS_HAVE_FALLTHRU_PREHEADERS,
      	set CP_FALLTHRU_PREHEADERS when calling create_preheaders.
      	(loop_optimizer_finalize): Do not verify flow info after reload.
      	* recog.c (validate_replace_rtx_1): New parameter simplify.
      	Default it to true.  Update all uses.  Factor out simplifying
      	code to ...
      	(simplify_while_replacing): ... this new function.
      	(validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): New.
      	* recog.h (validate_replace_rtx_part,
      	validate_replace_rtx_part_nosimplify): Declare.
      	* rtl.c (rtx_equal_p_cb): New.
      	(rtx_equal_p): Use it.
      	* rtl.h (rtx_equal_p_cb, hash_rtx_cb): Declare.
      	(remove_free_INSN_LIST_NODE, remove_free_EXPR_LIST_node,
      	debug_bb_n_slim, debug_bb_slim,    print_rtl_slim): Likewise.
      	* vecprim.h: Add a vector type for unsigned int. 
      	* haifa-sched.c: Include vecprim.h and cfgloop.h.
      	(issue_rate, sched_verbose_param, note_list, dfa_state_size,
      	ready_try, cycle_issued_insns, spec_info): Make global.
      	(readyp): Initialize.
      	(dfa_lookahead): New global variable.
      	(old_max_uid, old_last_basic_block): Remove.
      	(h_i_d): Make it a vector.
      	(INSN_TICK, INTER_TICK, QUEUE_INDEX, INSN_COST): Make them work
      	through HID macro.
      	(after_recovery, adding_bb_to_current_region_p):
      	New variables to handle correct insertion of the recovery code.
      	(struct ready_list): Move declaration to sched-int.h.
      	(rgn_n_insns): Removed.
      	(rtx_vec_t): Move to sched-int.h.
      	(find_insn_reg_weight): Remove.
      	(find_insn_reg_weight1): Rename to find_insn_reg_weight.
      	(haifa_init_h_i_d, haifa_finish_h_i_d):
      	New functions to initialize / finalize haifa instruction data.
      	(extend_h_i_d, init_h_i_d): Rewrite.
      	(unlink_other_notes): Move logic to add_to_note_list.  Handle
      	selective scheduler.
      	(ready_lastpos, ready_element, ready_sort, reemit_notes,
      	find_fallthru_edge): Make global, remove static prototypes.
      	(max_issue): Make global.  Add privileged_n and state parameters.  Use
      	them.  
      	(extend_global, extend_all): Removed.
      	(init_before_recovery): Add new param.  Fix the handling of the case
      	when we insert a recovery code before the EXIT which has a predecessor
      	with a fallthrough edge to it.
      	(create_recovery_block): Make global.  Rename to
      	sched_create_recovery_block.  Update.
      	(change_pattern): Rename to sched_change_pattern.  Make global.
      	(speculate_insn): Rename to sched_speculate_insn.  Make global.
      	Split haifa-specific functionality into ...
      	(haifa_change_pattern): New static function.
      	(sched_extend_bb): New static function.
      	(sched_init_bbs): New function.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(insn_cost): Adjust for selective scheduling.
      	(dep_cost_1): New function.  Move logic from ...
      	(dep_cost): ... here.
      	(dep_cost): Use dep_cost_1.
      	(contributes_to_priority_p): Use sched_deps_info instead of
      	current_sched_info.
      	(priority): Adjust to work with selective scheduling.  Process the
      	corner case when all dependencies don't contribute to priority.
      	(rank_for_schedule): Use ds_weak instead of dep_weak.
      	(advance_state): New function.  Move logic from ...
      	(advance_one_cycle): ... here.
      	(add_to_note_list, concat_note_lists): New functions.
      	(rm_other_notes): Make static.  Adjust for selective scheduling.
      	(remove_notes, restore_other_notes): New functions.
      	(move_insn): Add two arguments.  Update assert.  Don't call
      	reemit_notes.
      	(choose_ready): Remove lookahead variable, use dfa_lookahead.
      	Remove more_issue, max_points.  Move the code to initialize
      	max_lookahead_tries to max_issue.
      	(schedule_block): Remove rgn_n_insns1 parameter.  Don't allocate
      	ready.  Adjust use of move_insn.  Call restore_other_notes.
      	(luid): Remove.
      	(sched_init, sched_finish): Move Haifa-specific initialization/
      	finalization to ...
      	(haifa_sched_init, haifa_sched_finish): ... respectively.
      	New functions.
      	(setup_sched_dump): New function.
      	(haifa_init_only_bb): New static function.
      	(haifa_speculate_insn): New static function.
      	(try_ready): Use haifa_* instead of speculate_insn and
      	change_pattern.
      	(extend_ready, extend_all): Remove.
      	(sched_extend_ready_list, sched_finish_ready_list): New functions.
      	(create_check_block_twin, add_to_speculative_block): Use
      	haifa_insns_init instead of extend_global.  Update to use new
      	initialization functions.  Change parameter.  Factor out code from
      	create_check_block_twin to ...
      	(sched_create_recovery_edges) ... this new function.
      	(add_block): Remove.
      	(sched_scan_info): New.
      	(extend_bb): Use sched_scan_info.
      	(init_bb, extend_insn, init_insn, init_insns_in_bb, sched_scan): New
      	static functions for walking through scheduling region.
      	(sched_luids): New vector variable to replace uid_to_luid.
      	(luids_extend_insn): New function.
      	(sched_max_luid): New variable.
      	(luids_init_insn): New function.
      	(sched_init_luids, sched_finish_luids): New functions.
      	(insn_luid): New debug function.
      	(sched_extend_target): New function.
      	(haifa_init_insn): New static function.
      	(sched_init_only_bb): New hook.
      	(sched_split_block): New hook.
      	(sched_split_block_1): New function.
      	(sched_create_empty_bb): New hook.
      	(sched_create_empty_bb_1): New function.	
      	(common_sched_info, ready): New global variables.
      	(current_sched_info_var): Remove.
      	(move_block_after_check): Use common_sched_info.		
      	(haifa_luid_for_non_insn): New static function.	
      	(init_before_recovery): Use haifa_init_only_bb instead of
      	add_block.
      	(increase_insn_priority): New.
      	* modulo-sched.c: (issue_rate): Remove static declaration.
      	(sms_sched_info): Change type to haifa_sched_info.
      	(sms_sched_deps_info, sms_common_sched_info): New variables.
      	(setup_sched_infos): New.
      	(sms_schedule): Initialize them.  Call haifa_sched_init/finish.
      	Do not call regstat_free_calls_crossed.
      	(sms_print_insn): Use const_rtx.
      	* params.def (PARAM_MAX_PIPELINE_REGION_BLOCKS,
      	PARAM_MAX_PIPELINE_REGION_INSNS, PARAM_SELSCHED_MAX_LOOKAHEAD,
      	PARAM_SELSCHED_MAX_SCHED_TIMES, PARAM_SELSCHED_INSNS_TO_RENAME,
      	PARAM_SCHED_MEM_TRUE_DEP_COST): New.
      	* sched-deps.c (sched_deps_info): New.  Update all relevant uses of
      	current_sched_info to use it.
      	(enum reg_pending_barrier_mode): Move to sched-int.h.
      	(h_d_i_d): New variable. Initialize to NULL.
      	({true, output, anti, spec, forward}_dependency_cache): Initialize
      	to NULL.
      	(estimate_dep_weak): Remove static declaration.
      	(sched_has_condition_p): New function.  Adjust users of
      	sched_get_condition to use it instead.
      	(conditions_mutex_p): Add arguments indicating which conditions are
      	reversed.  Use them.
      	(sched_get_condition_with_rev): Rename from sched_get_condition.  Add
      	argument to indicate whether returned condition is reversed.  Do not
      	generate new rtx when condition should be reversed; indicate it by
      	setting new argument instead.
      	(add_dependence_list_and_free): Add deps parameter.
      	Update all users.  Do not free dependence list when
      	deps context is readonly.
      	(add_insn_mem_dependence, flush_pending_lists): Adjust for readonly
      	contexts.
      	(remove_from_dependence_list, remove_from_both_dependence_lists): New.
      	(remove_from_deps): New. Use the above functions.	
      	(cur_insn, can_start_lhs_rhs_p): New static variables.
      	(add_or_update_back_dep_1): Initialize present_dep_type.
      	(haifa_start_insn, haifa_finish_insn, haifa_note_reg_set,
      	haifa_note_reg_clobber, haifa_note_reg_use, haifa_note_mem_dep,
      	haifa_note_dep): New functions implementing dependence hooks for
      	the Haifa scheduler.
      	(note_reg_use, note_reg_set, note_reg_clobber, note_mem_dep,
      	note_dep): New functions.
      	(ds_to_dt, extend_deps_reg_info, maybe_extend_reg_info_p): New
      	functions.
      	(init_deps): Initialize last_reg_pending_barrier and deps->readonly.
      	(free_deps): Initialize deps->reg_last.
      	(sched_analyze_reg, sched_analyze_1, sched_analyze_2,
      	sched_analyze_insn): Update to use dependency hooks infrastructure
      	and readonly contexts.
      	(deps_analyze_insn): New function.  Move part of logic from ...
      	(sched_analyze): ... here.  Also move some logic to ...
      	(deps_start_bb): ... here.  New function.
      	(add_forw_dep, delete_forw_dep): Guard use of INSN_DEP_COUNT with
      	sel_sched_p.
      	(sched_deps_init): New function.  Move code from ...
      	(init_dependency_caches): ... here.  Remove.
      	(init_deps_data_vector): New.
      	(sched_deps_finish): New function.  Move code from ...
      	(free_dependency_caches): ... here.  Remove.
      	(init_deps_global, finish_deps_global): Adjust for use with
      	selective scheduling.
      	(get_dep_weak): Move logic to ...
      	(get_dep_weak_1): New function.
      	(ds_merge): Move logic to ...
      	(ds_merge_1): New static function.
      	(ds_full_merge, ds_max_merge, ds_get_speculation_types): New functions.
      	(ds_get_max_dep_weak): New function.
      	* sched-ebb.c (sched_n_insns): Rename to sched_rgn_n_insns.
      	(n_insns): Rename to rgn_n_insns.
      	(debug_ebb_dependencies): New function.
      	(init_ready_list): Use it.
      	(begin_schedule_ready): Use sched_init_only_bb.
      	(ebb_print_insn): Indicate when an insn starts a new cycle.
      	(contributes_to_priority, compute_jump_reg_dependencies,
      	add_remove_insn, fix_recovery_cfg): Add ebb_ prefix to function names.
      	(add_block1): Remove to ebb_add_block.
      	(ebb_sched_deps_info, ebb_common_sched_info): New variables.
      	(schedule_ebb): Initialize them.  Use remove_notes instead of
      	rm_other_notes.  Use haifa_local_init/finish.
      	(schedule_ebbs): Use haifa_sched_init/finish.
      	* sched-int.h: Include vecprim.h, remove rtl.h.
      	(struct ready_list): Delete declaration.
      	(sched_verbose_param, enum sched_pass_id_t,
      	bb_vec_t, insn_vec_t, rtx_vec_t): New.
      	(struct sched_scan_info_def): New structure.
      	(sched_scan_info, sched_scan, sched_init_bbs,
      	sched_init_luids, sched_finish_luids, sched_extend_target,
      	haifa_init_h_i_d, haifa_finish_h_i_d): Declare.
      	(struct common_sched_info_def): New.
      	(common_sched_info, haifa_common_sched_info,
      	sched_emulate_haifa_p): Declare.
      	(sel_sched_p): New.
      	(sched_luids): Declare.
      	(INSN_LUID, LUID_BY_UID, SET_INSN_LUID): Declare.
      	(sched_max_luid, insn_luid): Declare.
      	(note_list, remove_notes, restore_other_notes, bb_note): Declare.
      	(sched_insns_init, sched_insns_finish, xrecalloc, reemit_notes,
      	print_insn, print_pattern, print_value, haifa_classify_insn,
      	sel_find_rgns, sel_mark_hard_insn, dfa_state_size, advance_state,
      	setup_sched_dump, sched_init, sched_finish,
      	sel_insn_is_speculation_check): Export.
      	(struct ready_list): Move from haifa-sched.c.
      	(ready_try, ready, max_issue): Export.
      	(ebb_compute_jump_reg_dependencies, find_fallthru_edge,
      	sched_init_only_bb, sched_split_block, sched_split_block_1,
      	sched_create_empty_bb, sched_create_empty_bb_1,
      	sched_create_recovery_block, sched_create_recovery_edges): Export.
      	(enum reg_pending_barrier_mode): Export.
      	(struct deps): New fields `last_reg_pending_barrier' and `readonly'.
      	(deps_t): New.
      	(struct sched_info): Rename to haifa_sched_info.  Use const_rtx for
      	print_insn field.  Move add_block and fix_recovery_cfg to
      	common_sched_info_def.  Move compute_jump_reg_dependencies, use_cselib  ...
      	(struct sched_deps_info_def): ... this new structure.
      	(sched_deps_info): Declare.
      	(struct spec_info_def): Remove weakness_cutoff, add
      	data_weakness_cutoff and control_weakness_cutoff.
      	(spec_info): Declare.
      	(struct _haifa_deps_insn_data): Split from haifa_insn_data.  Add
      	dep_count field.
      	(struct haifa_insn_data): Rename to struct _haifa_insn_data.
      	(haifa_insn_data_def, haifa_insn_data_t): New typedefs.
      	(current_sched_info): Change type to struct haifa_sched_info.
      	(haifa_deps_insn_data_def, haifa_deps_insn_data_t): New typedefs.
      	(h_d_i_d): New variable.
      	(HDID): New accessor macro.
      	(h_i_d): Change type to VEC (haifa_insn_data_def, heap) *.
      	(HID): New accessor macro.  Rewrite h_i_d accessor macros through HID
      	and HDID.
      	(IS_SPECULATION_CHECK_P): Update for selective scheduler.
      	(enum SCHED_FLAGS): Update for selective scheduler.
      	(enum SPEC_SCHED_FLAGS): New flag SEL_SCHED_SPEC_DONT_CHECK_CONTROL.
      	(init_dependency_caches, free_dependency_caches): Delete declarations.
      	(deps_analyze_insn, remove_from_deps, get_dep_weak_1,
      	estimate_dep_weak, ds_full_merge, ds_max_merge, ds_weak,
      	ds_get_speculation_types, ds_get_max_dep_weak, sched_deps_init,
      	sched_deps_finish, haifa_note_reg_set, haifa_note_reg_use,
      	haifa_note_reg_clobber, maybe_extend_reg_info_p, deps_start_bb,
      	ds_to_dt): Export.
      	(rm_other_notes): Delete declaration.
      	(schedule_block): Remove one argument.
      	(cycle_issued_insns, issue_rate, dfa_lookahead, ready_sort,
      	ready_element, ready_lastpos, sched_extend_ready_list,
      	sched_finish_ready_list, sched_change_pattern, sched_speculate_insn,
      	concat_note_lists): Export.
      	(struct region): Move from sched-rgn.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN): Export.
      	(ebb_head, BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB, INSN_BB): Likewise.
      	(current_nr_blocks, current_blocks, target_bb): Likewise.
      	(dep_cost_1, sched_is_disabled_for_current_region_p, sched_rgn_init,
      	sched_rgn_finish, rgn_setup_region, sched_rgn_compute_dependencies,
      	sched_rgn_local_init, extend_regions,
      	rgn_make_new_region_out_of_new_block, compute_priorities,
      	debug_rgn_dependencies, free_rgn_deps, contributes_to_priority,
      	extend_rgns, deps_join rgn_setup_common_sched_info,
      	rgn_setup_sched_infos, debug_regions, debug_region, dump_region_dot,
      	dump_region_dot_file, haifa_sched_init, haifa_sched_finish): Export.
      	(get_rgn_sched_max_insns_priority, sel_add_to_insn_priority, 
      	increase_insn_priority): Likewise.
      	* sched-rgn.c: Include sel-sched.h.
      	(ref_counts): New static variable.  Use it ...
      	(INSN_REF_COUNT): ... here.  Rewrite and move closer to uses.
      	(FED_BY_SPEC_LOAD, IS_LOAD_INSN): Rewrite to use HID accessor macro.
      	(sched_is_disabled_for_current_region_p): Delete static declaration.
      	(struct region): Move to sched-int.h.
      	(nr_regions, rgn_table, rgn_bb_table, block_to_bb, containing_rgn,
      	ebb_head): Define and initialize.
      	(RGN_NR_BLOCKS, RGN_BLOCKS, RGN_DONT_CALC_DEPS, RGN_HAS_REAL_EBB,
      	BLOCK_TO_BB, CONTAINING_RGN, debug_regions, extend_regions,
      	BB_TO_BLOCK, EBB_FIRST_BB, EBB_LAST_BB): Move to
      	sched-int.h.
      	(find_single_block_region): Add new argument to indicate that EBB
      	regions should be constructed.
      	(debug_live): Delete declaration.
      	(current_nr_blocks, current_blocks, target_bb): Remove static qualifiers.
      	(compute_dom_prob_ps, check_live, update_live, set_spec_fed): Delete
      	declaration.
      	(init_regions): Delete declaration.
      	(debug_region, bb_in_region_p, dump_region_dot_file, dump_region_dot,
      	rgn_estimate_number_of_insns): New.
      	(too_large): Use estimate_number_of_insns.
      	(haifa_find_rgns): New. Move the code from ...
      	(find_rgns): ... here.  Call either sel_find_rgns or haifa_find_rgns.
      	(free_trg_info): New.
      	(compute_trg_info): Allocate candidate tables here instead of ...
      	(init_ready_list): ... here.
      	(rgn_print_insn): Use const_rtx.
      	(contributes_to_priority, extend_regions): Delete static declaration.
      	(add_remove_insn, fix_recovery_cfg): Add rgn_ to function names.
      	(add_block1): Rename to rgn_add_block.
      	(debug_rgn_dependencies): Delete static qualifier.
      	(new_ready): Use sched_deps_info.  Simplify.
      	(rgn_common_sched_info, rgn_const_sched_deps_info,
      	rgn_const_sel_sched_deps_info, rgn_sched_deps_info, rgn_sched_info): New.
      	(region_sched_info): Rename to rgn_const_sched_info.
      	(deps_join): New, extracted from ...
      	(propagate_deps): ... here.
      	(compute_block_dependences, debug_dependencies): Update for selective
      	scheduling.
      	(free_rgn_deps, compute_priorities): New functions.
      	(sched_rgn_init, sched_rgn_finish, rgn_setup_region,
      	sched_rgn_compute_dependencies): New functions.
      	(schedule_region): Use them.
      	(sched_rgn_local_init, sched_rgn_local_free, sched_rgn_local_finish,
      	rgn_setup_common_sched_info, rgn_setup_sched_infos):
      	New functions.
      	(schedule_insns): Call new functions that were split out.
      	(rgn_make_new_region_out_of_new_block): New.
      	(get_rgn_sched_max_insns_priority): New.
      	(rest_of_handle_sched, rest_of_handle_sched2): Call selective
      	scheduling when appropriate.
      	* sched-vis.c: Include insn-attr.h.
      	(print_value, print_pattern): Make global.
      	(print_rtl_slim, debug_bb_slim, debug_bb_n_slim): New functions.
      	* target-def.h (TARGET_SCHED_ADJUST_COST_2,
      	TARGET_SCHED_ALLOC_SCHED_CONTEXT, TARGET_SCHED_INIT_SCHED_CONTEXT,
      	TARGET_SCHED_SET_SCHED_CONTEXT, TARGET_SCHED_CLEAR_SCHED_CONTEXT,
      	TARGET_SCHED_FREE_SCHED_CONTEXT, TARGET_SCHED_GET_INSN_CHECKED_DS,
      	TARGET_SCHED_GET_INSN_SPEC_DS, TARGET_SCHED_SKIP_RTX_P): New target
      	hooks.  Initialize them to 0.
      	(TARGET_SCHED_GEN_CHECK): Rename to TARGET_SCHED_GEN_SPEC_CHECK.
      	* target.h (struct gcc_target): Add them.  Rename gen_check field to
      	gen_spec_check.
      	* flags.h (sel_sched_switch_set): Declare.
      	* opts.c (sel_sched_switch_set): New variable.
      	(decode_options): Unset flag_sel_sched_pipelining_outer_loops if
      	pipelining is disabled from command line.
      	(common_handle_option): Record whether selective scheduling is
      	requested from command line.
      	* doc/invoke.texi: Document new flags and parameters.
      	* doc/tm.texi: Document new target hooks.
      	* config/ia64/ia64.c (TARGET_SCHED_GEN_SPEC_CHECK): Define to ia64_gen_check.
      	(dfa_state_size): Do not declare locally.
      	* config/ia64/ia64.opt (msched-ar-data-spec): Default to 0.
      	* config/rs6000/rs6000.c (rs6000_init_sched_context,
      	rs6000_alloc_sched_context, rs6000_set_sched_context,
      	rs6000_free_sched_context): New functions.
      	(struct _rs6000_sched_context): New.
      	(rs6000_sched_reorder2): Do not modify INSN_PRIORITY for selective
      	scheduling.
      	(rs6000_sched_finish): Do not run for selective scheduling. 
      
      Co-Authored-By: Alexander Monakov <amonakov@ispras.ru>
      Co-Authored-By: Dmitry Melnik <dm@ispras.ru>
      Co-Authored-By: Dmitry Zhurikhin <zhur@ispras.ru>
      Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com>
      
      From-SVN: r139854
      Andrey Belevantsev committed
  2. 26 Jun, 2008 1 commit
    • ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual warnings. · 1634b18f
      	* ra.h (add_neighbor): Fix -Wc++-compat and/or -Wcast-qual
      	warnings.
      	* recog.c (check_asm_operands, validate_change_1): Likewise.
      	* reg-stack.c (check_asm_stack_operands, subst_asm_stack_regs,
      	subst_asm_stack_regs): Likewise.
      	* regclass.c (regclass, som_hash, som_eq, record_subregs_of_mode,
      	cannot_change_mode_set_regs, invalid_mode_change_p): Likewise.
      	* regmove.c (reg_is_remote_constant_p): Likewise.
      	* regrename.c (regrename_optimize, scan_rtx_reg,
      	kill_clobbered_value, kill_set_value, kill_autoinc_value):
      	Likewise.
      	* regstat.c (regstat_init_n_sets_and_refs, regstat_compute_ri,
      	regstat_compute_calls_crossed): Likewise.
      	* reload1.c (init_reload, new_insn_chain,
      	has_nonexceptional_receiver, reload, copy_reloads,
      	calculate_needs_all_insns, init_elim_table): Likewise.
      	* rtl-factoring.c (compute_rtx_cost, fill_hash_bucket): Likewise.
      	* rtl.c (shallow_copy_rtx_stat): Likewise.
      	* rtlanal.c (parms_set): Likewise.
      	* sbitmap.c (sbitmap_alloc, sbitmap_alloc_with_popcount,
      	sbitmap_resize, sbitmap_vector_alloc): Likewise.
      	* sched-ebb.c (earliest_block_with_similiar_load,
      	add_deps_for_risky_insns): Likewise.
      	* sched-rgn.c (find_rgns, gather_region_statistics, extend_rgns,
      	schedule_region): Likewise.
      	* see.c (eq_descriptor_pre_extension,
      	hash_descriptor_pre_extension, hash_del_pre_extension,
      	eq_descriptor_properties, hash_descriptor_properties,
      	hash_del_properties, see_seek_pre_extension_expr,
      	see_initialize_data_structures, see_print_register_properties,
      	see_print_pre_extension_expr, see_delete_merged_def_extension,
      	see_delete_unmerged_def_extension, see_emit_use_extension,
      	see_pre_delete_extension, see_map_extension, see_commit_changes,
      	see_analyze_merged_def_local_prop,
      	see_analyze_merged_def_local_prop,
      	see_analyze_unmerged_def_local_prop, see_analyze_use_local_prop,
      	see_set_prop_merged_def, see_set_prop_unmerged_def,
      	see_set_prop_unmerged_use, see_print_one_extension,
      	see_merge_one_use_extension, see_merge_one_def_extension,
      	see_store_reference_and_extension, see_update_uses_relevancy,
      	see_update_defs_relevancy): Likewise.
      	* statistics.c (hash_statistics_hash, hash_statistics_eq,
      	hash_statistics_free, curr_statistics_hash): Likewise.
      	* stmt.c (parse_output_constraint, decl_overlaps_hard_reg_set_p,
      	expand_asm_operands, expand_return, case_bit_test_cmp,
      	expand_case): Likewise.
      	* stor-layout.c (start_record_layout): Likewise.
      	* stringpool.c (ggc_alloc_string, gt_pch_n_S,
      	gt_pch_save_stringpool): Likewise.
      	* tree-data-ref.c (hash_stmt_vertex_info,
      	have_similar_memory_accesses_1, ref_base_address_1): Likewise.
      	* tree-ssa-phiopt.c (name_to_bb_hash): Likewise.
      
      From-SVN: r137128
      Kaveh R. Ghazi committed
  3. 23 Aug, 2007 1 commit
    • rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes in DEF_RTL_EXPR. · 091a3ac7
      	* rtl.c (rtx_code_size): Check CONST_FIXED to calcualte correct sizes
      	in DEF_RTL_EXPR.
      	(copy_rtx): Handle CONST_FIXED.
      	(rtx_equal_p): Likewise.
      	* rtl.h (fixed_value.h): New include.
      	(rtx_def): Add a new field of fixed_value to u.
      	(XCNMPFV): Define for accessing fixed_value.
      	(CONST_FIXED_VALUE, CONST_FIXED_VALUE_HIGH, CONST_FIXED_VALUE_LOW):
      	Define.
      	* rtl.def (CONST_FIXED): New constant.
      	(SS_MULT, US_MULT, SS_DIV, US_DIV, FRACT_CONVERT,
      	UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT, US_NEG,
      	US_ASHIFT): New codes.
      	* doc/rtl.texi (Expressions): Document const_fixed, us_neg, ss_mult,
      	us_mult, ss_div, us_div, us_ashift, fract_convert, sat_fract,
      	unsigned_fract_convert, unsigned_sat_fract): Document them.
      	* varasm.c (assemble_integer): Extend to support fixed-point constants
      	by using different machine classes.
      	(decode_addr_const): Handle FIXED_CST.
      	(const_hash_1): Likewise.
      	(compare_constant): Likewise.
      	(copy_constant): Likewise.
      	(const_rtx_hash_1): Handle CONST_FIXED.
      	(output_constant_pool_2): Handle MODE_FRACT, MODE_UFRACT, MODE_ACCUM,
      	MODE_UACCUM, MODE_VECTOR_FRACT, MODE_VECTOR_UFRACT, MODE_VECTOR_ACCUM,
      	MODE_VECTOR_UACCUM.
      	(initializer_constant_valid_p): Handle FIXED_CST.
      	(output_constant): Support FIXED_POINT_TYPE.
      	* gengenrtl.c (excluded_rtx): Check CONST_FIXED to exclude.
      	* cse.c (hash_rtx): Support CONST_FIXED.
      	(exp_equiv_p): Likewise.
      	(cannon_reg): Likewise.
      	(fold_rtx): Likewise.
      	(equiv_constant): Likewise.
      	(cse_process_notes_1): Likewise.
      	(count_reg_usage): Likewise.
      	* cselib.c (entry_and_rtx_equal_p): Check CONST_FIXED.
      	(rtx_equal_for_cselib_p): Handle CONST_FIXED.
      	(wrap_constant): Check CONST_FIXED.
      	(cselib_hash_rtx): Support CONST_FIXED.
      	(cselib_subst_to_values): Likewise.
      	* df-scan.c (df_uses_record): Likewise.
      	* gcse.c (want_to_gcse_p): Likewise.
      	(oprs_unchanged_p): Likewise.
      	(oprs_not_set_p): Likewise.
      	(compute_transp): Likewise.
      	(extract_mentioned_regs_helper): Likewise.
      	* genemit.c (gen_exp): Likewise.
      	* local-alloc.c (equiv_init_varies_p): Likewise.
      	(contains_replace_regs): Likewise.
      	(memref_referenced_p): Likewise.
      	* loop-invariant.c (check_maybe_invariant): Likewise.
      	(hash_invariant_expr_1): Likewise.
      	(invariant_expr_equal_p): Likewise.
      	* postreload-gcse.c (oprs_unchanged_p): Likewise.
      	* regclass.c (reg_scan_mark_refs): Likewise.
      	* regrename.c (scan_rtx): Likewise.
      	* resource.c (mark_referenced_resources): Likewise.
      	(mark_set_resources): Likewise.
      	* rtlanal.c (rtx_unstable_p): Likewise.
      	(rtx_varies_p): Likewise.
      	(count_occurrences): Likewise.
      	(reg_mentioned_p): Likewise.
      	(modified_between_p): Likewise.
      	(modified_in_p): Likewise.
      	(volatile_insn_p): Likewise.
      	(volatile_refs_p): Likewise.
      	(side_effects_p): Likewise.
      	(may_trap_p_1): Likewise.
      	(inequality_comparisons_p): Likewise.
      	(computed_jump_p_1): Likewise.
      	(commutative_operand_precedence): Likewise.
      	* sched-deps.c (sched_analyze_2): Likewise.
      	* sched-vis.c (print_value): Likewise.
      	* reload.c (operands_match_p): Likewise.
      	(subst_reg_equivs): Likewise.
      	* reload1.c (eliminate_regs_1): Likewise.
      	(elimination_effects): Likewise.
      	(scan_paradoxical_subregs): Likewise.
      	* alias.c (rtx_equal_for_memref_p): Likewise.
      	* Makefile.in (RTL_BASE_H): Add fixed-value.h.
      	* emit-rtl.c (const_fixed_htab): New hash table.
      	(const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed):
      	Declare.
      	(const_fixed_htab_hash, const_fixed_htab_eq, lookup_const_fixed,
      	const_fixed_from_fixed_value): New functions.
      	(verify_rtx_sharing): Handle CONST_FIXED.
      	(copy_rtx_if_shared_1): Likewise.
      	(reset_used_flags): Likewise.
      	(set_used_flags): Likewise.
      	(copy_insn_1): Likewise.
      	(init_emit_once): Create const_fixed_htab.
      	Store fixed-point scalar and vector zero and one to const_tiny_rtx.
      
      From-SVN: r127725
      Chao-ying Fu committed
  4. 26 Jul, 2007 1 commit
  5. 25 Jul, 2007 1 commit
    • cfglayout.c (insn_scope, insn_line): Constify. · f7d504c2
      	* cfglayout.c (insn_scope, insn_line): Constify.
      	* emit-rtl.c (const_int_htab_hash, const_int_htab_eq,
      	const_double_htab_hash, const_double_htab_eq,
      	mem_attrs_htab_hash): Likewise.
      	* loop-iv.c (biv_eq): Likewise.
      	* print-rtl.c (print_rtx, print_decl_name, print_mem_expr,
      	print_inline_rtx, debug_rtx, debug_rtx_list, debug_rtx_range,
      	debug_rtx_find, print_rtl, print_rtl_single, print_simple_rtl):
      	Likewise. 
      	* rtl-error.c (location_for_asm, diagnostic_for_asm,
      	error_for_asm, warning_for_asm, _fatal_insn,
      	_fatal_insn_not_found): Likewise. 
      	* rtl.c (rtx_size, shared_const_p, shallow_copy_rtx_stat,
      	rtx_equal_p, rtl_check_failed_bounds, rtl_check_failed_type1,
      	rtl_check_failed_type2, rtl_check_failed_code1,
      	rtl_check_failed_code2, rtl_check_failed_code_mode,
      	rtvec_check_failed_bounds, rtl_check_failed_flag): Likewise.
      	* rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
      	rtl_check_failed_type2, rtl_check_failed_code1,
      	rtl_check_failed_code2, rtl_check_failed_code_mode,
      	rtvec_check_failed_bounds, rtl_check_failed_flag, LABEL_KIND,
      	SET_LABEL_KIND, rhs_regno, subreg_lsb, subreg_regno, subreg_nregs,
      	shared_const_p, rtx_size, shallow_copy_rtx_stat, rtx_equal_p,
      	get_pool_mode, insn_line, insn_file, simplify_replace_rtx,
      	mode_signbit_p, rtx_addr_can_trap_p, nonzero_address_p,
      	rtx_unstable_p, get_integer_term, get_related_value,
      	offset_within_block_p, reg_mentioned_p, count_occurrences,
      	reg_referenced_p, reg_used_between_p, no_labels_between_p,
      	single_set_2, multiple_sets, set_noop_p, refers_to_regno_p,
      	reg_overlap_mentioned_p, dead_or_set_p, dead_or_set_regno_p,
      	find_reg_note, find_regno_note, find_reg_equal_equiv_note,
      	find_constant_src, find_reg_fusage, find_regno_fusage,
      	pure_call_p, remove_note, side_effects_p, volatile_refs_p,
      	volatile_insn_p, may_trap_p, may_trap_after_code_motion_p,
      	may_trap_or_fault_p, inequality_comparisons_p, tablejump_p,
      	computed_jump_p, auto_inc_p, in_expr_list_p,
      	remove_node_from_expr_list, loc_mentioned_in_p,
      	label_is_jump_target_p, reversed_comparison_code_parts,
      	debug_rtx, debug_rtx_list, debug_rtx_range, debug_rtx_find,
      	print_mem_expr, print_rtl, print_simple_rtl, print_rtl_single,
      	print_inline_rtx): Likewise.
      	* rtlanal.c (covers_regno_p, covers_regno_no_parallel_p,
      	computed_jump_p_1, nonzero_bits1, rtx_unstable_p,
      	rtx_addr_can_trap_p_1, rtx_addr_can_trap_p, nonzero_address_p,
      	get_integer_term, get_related_value, offset_within_block_p,
      	count_occurrences, reg_mentioned_p, no_labels_between_p,
      	reg_used_between_p, reg_referenced_p, single_set_2,
      	multiple_sets, set_noop_p, refers_to_regno_p,
      	reg_overlap_mentioned_p, dead_or_set_p,
      	covers_regno_no_parallel_p, covers_regno_p,
      	dead_or_set_regno_p, find_reg_note, find_regno_note,
      	find_reg_equal_equiv_note, find_constant_src, find_reg_fusage,
      	find_regno_fusage, pure_call_p, remove_note, in_expr_list_p,
      	remove_node_from_expr_list, volatile_insn_p, volatile_refs_p,
      	side_effects_p, may_trap_p_1, may_trap_p,
      	may_trap_after_code_motion_p, may_trap_or_fault_p,
      	inequality_comparisons_p, tablejump_p, computed_jump_p_1,
      	computed_jump_p, auto_inc_p, loc_mentioned_in_p, subreg_lsb,
      	subreg_regno, subreg_nregs, label_is_jump_target_p): Likewise.
      	* simplify-rtx.c (neg_const_int, plus_minus_operand_p,
      	mode_signbit_p, simplify_replace_rtx, plus_minus_operand_p):
      	Likewise. 
      	* toplev.h (_fatal_insn_not_found, _fatal_insn, error_for_asm,
      	warning_for_asm): Likewise.
      	* tree.h (print_rtl): Likewise.
      	* varasm.c (get_pool_mode): Likewise.
      
      From-SVN: r126922
      Kaveh R. Ghazi committed
  6. 11 Jun, 2007 1 commit
  7. 21 May, 2007 1 commit
    • gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of NOTE_LINE_NUMBER... · a38e7aa5
      	* gengtype.c (adjust_field_rtx_def): Use NOTE_KIND instead of
      	NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	* ddg.c (create_ddg): LIkewise.
      	* final.c (final): Remove hunk moving line numbernotes around since
      	they are no longer present at this stage.
      	(final_scan_insn): Use NOTE_KIND instead of
      	NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	(output_asm_label): Likewise.
      	* reorg.c (dbr_schedule): Likewise.
      	* haifa-sched.c (unlink_other_notes): Likewise.
      	* mode-switching.c (optimize_mode_switching): Likewise.
      	* graph.c (start_bb): Likewise.
      	* rtl.def (NOTE): Update description.
      	* jump.c (squeeze_notes): Delete.
      	(mark_jump_label): Use NOTE_KIND instead of NOTE_LINE_NUMBER; use
      	NOTE_INSN_BASIC_BLOCK_P when possible.
      	* ifcvt.c (dead_or_predicable): Remove call of squeeze_notes.
      	* dwarf2out.c (gen_label_die): Use NOTE_KIND instead of
              NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P when possible.
      	(dwarf2out_var_location): Likewise.
      	* cfgbuild.c (make_edges): Likewise.
      	(find_basic_blocks_1): Likewise.
      	* function.c (reorder_blocks_1): Likewise.
      	(epilogue_done): Likewise.
      	(reposition_prologue_and_epilogue_notes): Likewise.
      	* print-rtl.c (print_rtx): Likewise; drop code for printing line number
      	notes.
      	(print_rtl): Likewise.
      	(print_rtl_single): Likewise.
      	* gcse.c (insert_insn_start_bb): Likewise.
      	* alias.c (init_alias_analysis): Likewise.
      	* calls.c (fixup_tail_calls): Likewise.
      	* except.c (sjlj_emit_function_enter): Likewise.
      	* emit-rtl.c (add_insn_after): Likeiwse.
      	(emit_label_before): Likewise.
      	(emit_label_after): Likewise.
      	(emit_note_before, emit_note_after, emit_note): Update
      	parameter to be enum insn_note; do not deal with source
      	files.
      	* cfgcleanup.c (merge_blocks_move_predecessor_nojumps):
      	Use NOTE_KIND instead of NOTE_LINE_NUMBER; use NOTE_INSN_BASIC_BLOCK_P
      	when possible.
      	(merge_blocks_move_successor_nojumps): Simplify now when
      	we don't have BLOCK notes.
      	(try_optimize_cfg): Likewise.
      	* cfglayout.c (skip_insns_after_block): Likewise.
      	(record_effective_endpoints): Likewise.
      	(duplicate_insn_chain): Likewise.
      	* varasm.c (output_constant_pool_1): Likewise.
      	* sched-deps.c (sched_analyze): Likewise.
      	* rtl.c (NOTE_INSN_MAX_isnt_negative_adjust_NOTE_INSN_BIAS):
      	Exterminate.
      	(note_insn_name): Simplify now when NOTE_INSN_BIAS is gone.
      	* rtl.h (NOTE_SOURCE_LOCATION, NOTE_EXPANDED_LOCATION): Exterminate.
      	(SET_INSN_DELETED): Simplify.
      	(NOTE_LINE_NUMBER): Exterminate.
      	(NOTE_LINE_KIND): New.
      	(NOTE_INSN_BASIC_BLOCK_P): Update.
      	(enum insn_note): Simplify.
      	(GET_NOTE_INSN_NAME) Simplify.
      	(emit_note_before, emit_note_after, emit_note): Update prototype.
      	(squeeze_notes): Remove.
      	* sched-int.h (NOTE_NOT_BB_P): Update.
      	* resource.c (mark_target_live_regs): Update.
      	* sched-rgn.c (debug_dependencies): Update.
      	* sched-vis.c (print_insn): Update.
      	* config/alpha/alpha.c (alpha_handle_trap_shadows): Update.
      	* config/i386/i386.c (ix86_output_function_epilogue): Update.
      	* config/sh/sh.c (sh_adjust_unroll_max): Function dead since gcc 4.0.0.
      	(TARGET_ADJUST_UNROLL_MAX): Likewise.
      	(split_branches): Update.
      	(sh_optimize_target_register_callee_saved): Remove hunk dead since gcc
      	4.0.0.
      	(sh_adjust_unroll_max): Exterminate.
      	* config/c4x/c4x.c (c4x_reorg): Use SET_INSN_DELETED.
      	* config/m68hc11/m68hc11.c (m68hc11_check_z_replacement): Likewise.
      	(m68hc11_reorg): Likewise.
      	* config/ia64/ia64.c (emit_insn_group_barriers): Update.
      	(emit_predicate_relation_info): Update.
      	(process_for_unwind_directive): Update.
      	* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Update.
      	(output_call): Update.
      	* config/pa/pa.c (output_lbranch): Update.
      	(output_millicode_call): Update.
      	(output_call): Update.
      	(pa_combine_instructions): Update.
      	* config/mips/mips.c (mips16_gp_pseudo_reg): Update.
      	* config/bfin/bfin.c (gen_one_bundle): Update.
      	* cfgrtl.c (can_delete_note_p): Update.
      	(delete_insn): Update.
      	(rtl_merge_blocks): Update.
      	(commit_one_edge_insertion): Update.
      	(rtl_verify_flow_info): Update.
      	* stmt.c (expand_case): Do not call squeeze_notes.
      
      From-SVN: r124895
      Jan Hubicka committed
  8. 07 Jul, 2006 1 commit
    • pointer-set.c (pointer_set_destroy): Correct whitespace. · 83f676b3
      	* pointer-set.c (pointer_set_destroy): Correct whitespace.
      	* cfgloopanal.c (dump_graph): Likewise.
      	* dojump.c (discard_pending_stack_adjust): Likewise.
      	* fix-header.c (TARGET_EXTRA_INCLUDE, TARGET_EXTRA_PRE_INCLUDES):
      	Likewise.
      	* alloc-pool.c (dump_alloc_pool_statistics): Likewise.
      	* function.c (finalize_block_changes): Likewise.
      	* gcc-common.c (ggc_free_overhead, dump_gcc_loc_statistics): Likewise.
      	* tree-ssa-dce.c (clear_control_dependence_bitmap): Likewise.
      	* rtl.c (dump_rtx_statistics): Likewise.
      	* tree-ssa-structalias.c (sort_fieldstack, init_alias_heapvars): 
      	Likewise.
      	* varray.c (dump_varray_statistics): Likewise.
      	* dfp.c (encode_decimal32, decode_decimal32, encode_decimal64,
      	decode_decimal64, encode_decimal128, decode_decimal128,
      	decimal_real_to_decimal): Likewise.
      
      From-SVN: r115258
      Roger Sayle committed
  9. 03 Mar, 2006 1 commit
    • tm.texi: Refer to SYMBOL_REF_HAS_BLOCK_INFO_P instead of SYMBOL_REF_IN_BLOCK_P. · 3fa9c136
      	* doc/tm.texi: Refer to SYMBOL_REF_HAS_BLOCK_INFO_P instead of
      	SYMBOL_REF_IN_BLOCK_P.
      	* doc/rtl.texi: Likewise.  Refer to SYMBOL_FLAG_HAS_BLOCK_INFO instead
      	of SYMBOL_FLAG_IN_BLOCK.
      	* gengtype.c (adjust_field_rtx_def): Use SYMBOL_REF_HAS_BLOCK_INFO_P
      	instead of SYMBOL_REF_IN_BLOCK_P.
      	* explow.c (use_anchored_address): Likewise.
      	* rtl.c (rtx_size): Likewise.
      	* varasm.c (create_block_symbol): Set SYMBOL_FLAG_HAS_BLOCK_INFO
      	instead of SYMBOL_FLAG_IN_BLOCK.
      	(make_decl_rtl): Use SYMBOL_REF_HAS_BLOCK_INFO_P instead of
      	SYMBOL_REF_IN_BLOCK_P.
      	(assemble_variable): Likewise.
      	(output_constant_def_contents): Likewise.
      	(output_constant_pool): Likewise.
      	(default_encode_section_info): Preserve SYMBOL_FLAG_HAS_BLOCK_INFO
      	instead of SYMBOL_FLAG_IN_BLOCK.
      	* rtl.h (block_symbol): Refer to SYMBOL_REF_HAS_BLOCK_INFO_P instead of
      	SYMBOL_REF_IN_BLOCK_P.
      	(SYMBOL_REF_BLOCK): Likewise.
      	(SYMBOL_REF_OFFSET): Likewise.
      	(BLOCK_SYMBOL_CHECK): Use SYMBOL_REF_HAS_BLOCK_INFO_P instead of
      	SYMBOL_REF_IN_BLOCK_P.
      	(SYMBOL_FLAG_IN_BLOCK): Replace with...
      	(SYMBOL_FLAG_HAS_BLOCK_INFO): ...this.
      	(SYMBOL_REF_IN_BLOCK_P): Replace with...
      	(SYMBOL_REF_HAS_BLOCK_INFO_P): ...this.
      
      From-SVN: r111675
      Richard Sandiford committed
  10. 18 Feb, 2006 1 commit
    • re PR target/9703 ([arm] Accessing data through constant pool more times could… · aacd3885
      re PR target/9703 ([arm] Accessing data through constant pool more times could be solved in less instructions)
      
      	* cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE.
      	* emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx.
      	(copy_insn_1): Likewise.  Don't copy each field individually.
      	Reindent.
      	* read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead
      	of RTX_SIZE.
      	* reload1.c (eliminate_regs): Use shallow_copy_rtx.
      	* rtl.c (rtx_size): Rename variable to...
      	(rtx_code_size): ...this.
      	(rtx_size): New function.
      	(rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE.
      	(copy_rtx): Use shallow_copy_rtx.  Don't copy each field individually.
      	Reindent.
      	(shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE.
      	* rtl.h (rtx_code_size): New variable.
      	(rtx_size): Change from a variable to a function.
      	(RTX_SIZE): Rename to...
      	(RTX_CODE_SIZE): ...this.
      
      	PR target/9703
      	PR tree-optimization/17106
      	* doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document.
      	(Anchored Addresses): New section.
      	* doc/invoke.texi (-fsection-anchors): Document.
      	* doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise.
      	(SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise.
      	(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise.
      	* hooks.c (hook_bool_mode_rtx_false): New function.
      	* hooks.h (hook_bool_mode_rtx_false): Declare.
      	* gengtype.c (create_optional_field): New function.
      	(adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when
      	SYMBOL_REF_IN_BLOCK_P is true.
      	* target.h (output_anchor, use_blocks_for_constant_p): New hooks.
      	(min_anchor_offset, max_anchor_offset): Likewise.
      	(use_anchors_for_symbol_p): New hook.
      	* toplev.c (compile_file): Call output_object_blocks.
      	(target_supports_section_anchors_p): New function.
      	(process_options): Check that -fsection-anchors is only used on
      	targets that support it and when -funit-at-a-time is in effect.
      	* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL
      	if the decl doesn't have one.
      	* dwarf2out.c: Remove instantiations of VEC(rtx,gc).
      	* expr.c (emit_move_multi_word, emit_move_insn): Pass the result
      	of force_const_mem through use_anchored_address.
      	(expand_expr_constant): New function.
      	(expand_expr_addr_expr_1): Call it.  Use the same modifier when
      	calling expand_expr for INDIRECT_REF.
      	(expand_expr_real_1): Pass DECL_RTL through use_anchored_address
      	for all modifiers except EXPAND_INITIALIZER.  Use expand_expr_constant.
      	* expr.h (use_anchored_address): Declare.
      	* loop-unroll.c: Don't declare rtx vectors here.
      	* explow.c: Include output.h.
      	(validize_mem): Call use_anchored_address.
      	(use_anchored_address): New function.
      	* common.opt (-fsection-anchors): New switch.
      	* varasm.c (object_block_htab, anchor_labelno): New variables.
      	(hash_section, object_block_entry_eq, object_block_entry_hash)
      	(use_object_blocks_p, get_block_for_section, create_block_symbol)
      	(use_blocks_for_decl_p, change_symbol_section): New functions.
      	(get_variable_section): New function, split out from assemble_variable.
      	(make_decl_rtl): Create a block symbol if use_object_blocks_p and
      	use_blocks_for_decl_p say so.  Use change_symbol_section if the
      	symbol has already been created.
      	(assemble_variable_contents): New function, split out from...
      	(assemble_variable): ...here.  Don't output any code for
      	block symbols; just pass them to place_block_symbol.
      	Use get_variable_section and assemble_variable_contents.
      	(get_constant_alignment, get_constant_section, get_constant_size): New
      	functions, split from output_constant_def_contents.
      	(build_constant_desc): Create a block symbol if use_object_blocks_p
      	says so.  Or into SYMBOL_REF_FLAGS.
      	(assemble_constant_contents): New function, split from...
      	(output_constant_def_contents): ...here.  Don't output any code
      	for block symbols; just pass them to place_section_symbol.
      	Use get_constant_section and get_constant_alignment.
      	(force_const_mem): Create a block symbol if use_object_blocks_p and
      	use_blocks_for_constant_p say so.  Or into SYMBOL_REF_FLAGS.
      	(output_constant_pool_1): Add an explicit alignment argument.
      	Don't switch sections here.
      	(output_constant_pool): Adjust call to output_constant_pool_1.
      	Switch sections here instead.  Don't output anything for block symbols;
      	just pass them to place_block_symbol.
      	(init_varasm_once): Initialize object_block_htab.
      	(default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK.
      	(default_asm_output_anchor, default_use_aenchors_for_symbol_p)
      	(place_block_symbol, get_section_anchor, output_object_block)
      	(output_object_block_htab, output_object_blocks): New functions.
      	* target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro.
      	(TARGET_ASM_OUT): Include it.
      	(TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro.
      	(TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros.
      	(TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro.
      	(TARGET_INITIALIZER): Include them.
      	* rtl.c (rtl_check_failed_block_symbol): New function.
      	* rtl.h: Include vec.h.  Declare heap and gc rtx vectors.
      	(block_symbol, object_block): New structures.
      	(rtx_def): Add a block_symbol field to the union.
      	(BLOCK_SYMBOL_CHECK): New macro.
      	(rtl_check_failed_block_symbol): Declare.
      	(SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags.
      	(SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates.
      	(SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2.
      	(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors.
      	* output.h (output_section_symbols): Declare.
      	(object_block): Name structure.
      	(place_section_symbol, get_section_anchor, default_asm_output_anchor)
      	(default_use_anchors_for_symbol_p): Declare.
      	* Makefile.in (RTL_BASE_H): Add vec.h.
      	(explow.o): Depend on output.h.
      	* config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default.
      	(TARGET_MAX_ANCHOR_OFFSET): Likewise.
      	(TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
      	(rs6000_use_blocks_for_constant_p): New function.
      
      From-SVN: r111254
      Richard Sandiford committed
  11. 01 Aug, 2005 1 commit
    • Makefile.in (RTL_BASE_H): Add real.h. · 9e254451
              * Makefile.in (RTL_BASE_H): Add real.h.
              * real.h (REAL_VALUE_FROM_CONST_DOUBLE): Use structure copy
              instead of memcpy.
              * emit-rtl.c (const_double_from_real_value): Likewise; use rtx.u.rv
              directly.
              * rtl.c (rtl_check_failed_code_mode): New.
              * rtl.h (struct rtx_def): Add u.rv.
              (XCMWINT, XCNMPRV): New.
              (CONST_DOUBLE_LOW, CONST_DOUBLE_HIGH): Use XCMWINT.
              (CONST_DOUBLE_REAL_VALUE): Use XCNMPRV; constify.
      
      Co-Authored-By: Richard Henderson <rth@redhat.com>
      
      From-SVN: r102643
      Ian Lance Taylor committed
  12. 25 Jun, 2005 1 commit
  13. 01 Jun, 2005 1 commit
    • basic-block.h, [...]: Don't include errors.h and include toplev.h if necessary. · 4c714dd4
      	* basic-block.h, bb-reorder.c, c-gimplify.c, config/darwin.c,
      	config/rs6000/rs6000-c.c, dominance.c, gimple-low.c, gimplify.c,
      	lambda-code.c, lambda-trans.c, tree-browser.c, tree-cfg.c,
      	tree-chrec.c, tree-data-ref.c, tree-dfa.c, tree-eh.c,
      	tree-if-conv.c, tree-into-ssa.c, tree-loop-linear.c,
      	tree-mudflap.c, tree-nomudflap.c, tree-outof-ssa.c,
      	tree-pretty-print.c, tree-scalar-evolution.c, tree-sra.c,
      	tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c,
      	tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-live.c,
      	tree-ssa-operands.c, tree-ssa-phiopt.c, tree-ssa-pre.c,
      	tree-ssa-propagate.c, tree-ssa-sink.c, tree-ssa-threadupdate.c,
      	tree-ssa-uncprop.c, tree-ssa.c, tree-vect-analyze.c,
      	tree-vect-transform.c, tree-vectorizer.c, vec.c: Don't include
      	errors.h and include toplev.h if necessary.
      
      	* rtl.c, varray.c: If we're compiling as a GENERATOR_FILE, include
      	errors.h otherwise include toplev.h.
      
      	* Makefile.in: Update dependencies.
      
      ada:
      	* misc.c: Don't include errors.h.
      
      fortran:
      	* fortran/trans-decl.c: Don't include errors.h.
      	* fortran/Make-lang.in: Updates dependencies.
      
      java:
      	* java/verify-glue.c: Don't include errors.h and include toplev.h.
      	* java/Make-lang.in: Updates dependencies.
      
      treelang:
      	* treelang/lex.l, treelang/parse.y: Don't include errors.h and
      	include toplev.h.
      	* treelang/Make-lang.in: Updates dependencies.
      
      From-SVN: r100420
      Kaveh R. Ghazi committed
  14. 02 May, 2005 1 commit
    • ggc.h (ggc_alloc_zone_pass_stat): New macro. · a6e4d85b
      	* ggc.h (ggc_alloc_zone_pass_stat): New macro.
      	(ggc_alloc_zone_stat): Don't define.
      	* ggc-zone.c (ggc_alloc_typed_stat, ggc_alloc_stat): Use
      	ggc_alloc_zone_pass_stat.
      	* rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Likewise.
      	* tree.c (make_node_stat, copy_node_stat, make_tree_binfo_stat)
      	(make_tree_vec_stat, tree_cons_stat, build1_stat): Likewise.
      
      From-SVN: r99114
      Daniel Jacobowitz committed
  15. 13 Mar, 2005 1 commit
    • ggc-zone.c: Rewritten. · 08cee789
      	* ggc-zone.c: Rewritten.
      
      	* alloc-pool.c (dump_alloc_pool_statistics): Don't print statistics
      	if there are none.
      	* configure.ac: Define GGC_ZONE for --with-gc=zone.
      	* config.in: Regenerated.
      	* configure: Regenerated.
      	* gentype.c (write_types_process_field, write_func_for_structure):
      	Pass new argument to gt_pch_note_object.
      	* ggc-common.c (struct ptr_data): Add TYPE.
      	(gt_pch_note_object): Take TYPE argument and save it.
      	(call_count): Update call to ggc_pch_count_object.
      	(call_alloc): Update call to ggc_pch_alloc_object.
      	(gt_pch_save): Call ggc_pch_prepare_write after paddng the PCH
      	file.
      	* ggc-none.c (rtl_zone, garbage_zone, ggc_alloc_zone_stat): Delete.
      	* ggc-page.c (rtl_zone, tree_zone, garbage_zone)
      	(ggc_alloc_zone_stat): Delete.
      	(ggc_pch_count_object, ggc_pch_alloc_object): Add TYPE argument.
      	* ggc.h (gt_pch_note_object, ggc_pch_count_object)
      	(ggc_pch_alloc_object): Update prototypes.
      	(garbage_zone): Delete.
      	(tree_zone, rtl_zone, ggc_alloc_zone_stat, ggc_alloc_zone): Move to
      	GGC_ZONE conditional.  Update.  Change tree_zone and rtl_zone into
      	pointers.
      	(tree_id_zone): New variable.
      	(ggc_alloc_cleared_zone): Remove unused.
      	(ggc_alloc_zone): Define.
      	(ggc_alloc_rtvec, ggc_alloc_tree): Update to use ggc_alloc_zone.
      	* rtl.c (rtx_alloc_stat, shallow_copy_rtx_stat): Use
      	ggc_alloc_zone_stat.
      	* stringpool.c (gt_pch_n_S): Update call to gt_pch_note_object.
      	* tree.c (copy_node_stat, make_tree_binfo_stat, make_tree_vec_stat)
      	(tree_cons_stat, build1_stat): Update call to ggc_alloc_zone_stat.
      	(make_node_stat): Likewise.  Use tree_id_zone.
      
      From-SVN: r96381
      Daniel Jacobowitz committed
  16. 07 Feb, 2005 1 commit
  17. 30 Jan, 2005 1 commit
  18. 09 Nov, 2004 1 commit
    • builtins.c, [...]: Avoid "`" as left quote, using "'" or %q, %< and %> as appropriate. · 9e637a26
      	* builtins.c, c-common.c, c-decl.c, c-format.c, c-format.h,
      	c-parse.in, c-pch.c, c-pragma.c, collect2.c, final.c, gcc.c,
      	gcov.c, opts.c, pretty-print.h, protoize.c, reg-stack.c, rtl.c,
      	tlink.c, config/alpha/alpha.c, config/arc/arc.c, config/arm/arm.c,
      	config/avr/avr.c, config/c4x/c4x.c, config/darwin.c,
      	config/frv/frv.c, config/h8300/h8300.c, config/i386/i386.c,
      	config/i386/winnt.c, config/ia64/ia64.c, config/ip2k/ip2k.c,
      	config/iq2000/iq2000.c, config/m32r/m32r.c,
      	config/m68hc11/m68hc11.c, config/m68k/m68k.c, config/m68k/m68k.h,
      	config/mcore/mcore.c, config/mips/mips.c, config/mmix/mmix.c,
      	config/ns32k/ns32k.c, config/rs6000/host-darwin.c,
      	config/rs6000/rs6000.c, config/s390/s390.c, config/sh/sh.c,
      	config/sh/symbian.c, config/stormy16/stormy16.c,
      	config/v850/v850.c: Avoid "`" as left quote, using "'" or %q, %<
      	and %> as appropriate.  Use %' as apostrophe in diagnostics where
      	applicable.  Use %< and %> in place of '' quotes where applicable.
      	Use %qs in place of %<%s%>.  Consistently quote __builtin function
      	names.
      
      ada:
      	* misc.c (gnat_handle_option): Use %< and %> for quoting in
      	warning message.
      
      cp:
      	* call.c, class.c, decl.c, decl2.c, error.c, mangle.c, parser.c,
      	pt.c, search.c, semantics.c, typeck.c: Use %q, %< and %> for
      	quoting in diagnostics.
      	* parser.c (cp_parser_sizeof_operand): Use '' instead of `' for
      	quoting in printf format.
      	* decl.c (duplicate_decls, start_decl): Use %qD instead of
      	unquoted %D.
      
      objc:
      	* objc-act.c: Use %q, %< and %> for quoting in diagnostics.
      
      testsuite:
      	* gcc.dg/builtin-prefetch-1.c: Adjust expected messages.
      
      From-SVN: r90337
      Joseph Myers committed
  19. 09 Sep, 2004 1 commit
    • ra-build.c (copy_insn_p, [...]): Use gcc_assert and gcc_unreachable instead of abort. · 41374e13
      	* ra-build.c (copy_insn_p, remember_move, defuse_overlap_p_1,
      	live_out_1, prune_hardregs_for_mode, init_one_web_common,
      	reinit_one_web, add_subweb, add_subweb_2, init_web_parts,
      	record_conflict, compare_and_free_webs, init_webs_defs_uses,
      	parts_to_webs_1, parts_to_webs, reset_conflicts,
      	check_conflict_numbers, remember_web_was_spilled, handle_asm_insn,
      	ra_build_free): Use gcc_assert and gcc_unreachable instead of abort.
      	* ra-colorize.c (push_list, put_web, reset_lists, put_web_at_end,
      	put_move, remove_move, combine, select_spill, colorize_one_web,
      	try_recolor_web, insert_coalesced_conflicts, check_colors,
      	break_precolored_alias, restore_conflicts_from_coalesce,
      	sort_and_combine_web_pairs, check_uncoalesced_moves): Likewise.
      	* ra-rewrite.c (spill_coalescing, slots_overlap_p, emit_loads,
      	reloads_to_loads, rewrite_program2, emit_colors): Likewise.
      	* ra.c (first_hard_reg, create_insn_info, find_subweb, init_ra,
      	check_df): Likewise.
      	* real.c (do_add, do_multiply, do_divide, do_compare, do_fix_trunc,
      	real_arithmetic, real_compare, real_exponent, real_ldexp,
      	real_identical, real_to_integer, real_to_integer2, real_to_decimal,
      	real_to_hexadecimal, real_from_integer, ten_to_ptwo, ten_to_mptwo,
      	real_digit, real_nan, real_maxval, round_for_format, real_convert,
      	real_to_target, real_from_target, real_hash, encode_ieee_single,
      	encode_ieee_double, encode_ieee_extended, encode_ieee_quad,
      	encode_vax_f, encode_vax_d, encode_vax_g, encode_i370_single,
      	encode_i370_double, encode_c4x_single, encode_c4x_extended): Likewise.
      	* recog.c (validate_change, validate_replace_rtx_1, asm_operand_ok,
      	extract_insn, peep2_next_insn, peep2_reg_dead_p,
      	peep2_find_free_register, peephole2_optimize, store_data_bypass_p,
      	if_test_bypass_p): Likewise.
      	* reg-stack.c (record_label_references, get_asm_operand_n_inputs,
      	stack_result, remove_regno_note, get_hard_regnum, emit_pop_insn,
      	emit_swap_insn, swap_to_top, move_for_stack_reg,
      	subst_stack_regs_pat, subst_asm_stack_regs, change_stack,
      	compensate_edge, convert_regs_1): Likewise.
      	* regclass.c (init_reg_sets, init_reg_sets_1,
      	memory_move_secondary_cost): Likewise.
      	* regrename.c (note_sets, clear_dead_regs, scan_rtx_reg, scan_rtx):
      	Likewise.
      	* reload.c (push_secondary_reload, find_valid_class, push_reload,
      	operands_match_p, decompose, immune_p, find_reloads,
      	find_reloads_toplev, find_reloads_address_1, subst_reloads,
      	copy_replacements, refers_to_regno_for_reload_p,
      	reg_overlap_mentioned_for_reload_p): Likewise.
      	* reload1.c (compute_use_by_pseudos, replace_pseudos_in, reload,
      	count_pseudo, find_reg, eliminate_regs, eliminate_regs_in_insn,
      	verify_initial_elim_offsets, finish_spills, clear_reload_reg_in_use,
      	reload_reg_free_p, reload_reg_reaches_end_p, reloads_conflict,
      	choose_reload_regs, merge_assigned_reloads, emit_input_reload_insns,
      	do_output_reload, fixup_abnormal_edges): Likewise.
      	* reorg.c (stop_search_p, emit_delay_sequence, get_jump_flags,
      	fill_slots_from_thread, relax_delay_slots): Likewise.
      	* resource.c (mark_referenced_resources, mark_set_resources):
      	Likewise.
      	* rtl.c (copy_rtx, rtx_equal_p): Likewise.
      	* rtlanal.c (insn_dependent_p, reg_overlap_mentioned_p,
      	dead_or_set_p, find_reg_fusage, remove_note, replace_rtx,
      	subreg_lsb_1, subreg_regno_offset, subreg_offset_representable_p,
      	find_first_parameter_load, can_hoist_insn_p, hoist_update_store,
      	hoist_insn_after, hoist_insn_to_edge, nonzero_bits1): Likewise.
      	* rtlhooks.c (gen_lowpart_general): Likewise.
      	* sbitmap.c (sbitmap_difference): Likewise.
      	* sched-deps.c (add_dependence, sched_analyze_1, sched_analyze_2,
      	sched_analyze, add_forward_dependence): Likewise.
      	* sched-ebb.c (fix_basic_block_boundaries, schedule_ebb): Likewise.
      	* sched-rgn.c (debug_regions, compute_trg_info, schedule_region,
      	schedule_insns): Likewise.
      	* sched-vis.c (print_pattern): Likewise.
      	* sdbout.c (sdbout_symbol, sdbout_toplevel_data): Likewise.
      	* simplify-rtx.c (simplify_unary_operation, simplify_binary_operation,
      	simplify_const_relational_operation, simplify_ternary_operation,
      	simplify_immed_subreg, simplify_subreg, simplify_gen_subreg):
      	Likewise.
      	* sreal.c (copy, sreal_sub, sreal_div): Likewise.
      	* stmt.c (force_label_rtx, expand_goto, expand_asm_operands,
      	resolve_operand_name_1, expand_return, expand_decl,
      	expand_anon_union_decl, emit_case_bit_tests, expand_case): Likewise.
      	* stor-layout.c (put_pending_size, smallest_mode_for_size,
      	int_mode_for_mode, layout_decl, finish_builtin_struct, layout_type,
      	set_sizetype, get_mode_bounds): Likewise.
      
      From-SVN: r87244
      Nathan Sidwell committed
  20. 18 Aug, 2004 1 commit
    • insn-notes.def, [...]: New files. · 826c9564
      	* insn-notes.def, reg-notes.def: New files.
      	* rtl.h: Use them to define enum insn_note and enum reg_note.
      	* rtl.c: Use them to define note_insn_name and reg_note_name.
      
      	* modulo-sched.c, sched-rgn.c, final.c: NOTE_DISABLE_SCHED_OF_BLOCK
      	renamed to NOTE_INSN_DISABLE_SCHED_OF_BLOCK.
      
      From-SVN: r86212
      Zack Weinberg committed
  21. 16 Aug, 2004 1 commit
    • Makefile.in (BUILD_PREFIX, [...]): Delete. · 45c8116d
      	* Makefile.in (BUILD_PREFIX, BUILD_PREFIX_1): Delete.
      	(BUILD_RTL, BUILD_PRINT, BUILD_ERRORS, BUILD_VARRAY): Update.
      	(genobjs): Add build-rtl.o, build-print-rtl.o, build-varray.o.
      	(genobjs static pattern rule): Remove %.c dependency.
      	($(BUILD_PREFIX_1)rtl.o, print-rtl.o, $(BUILD_PREFIX_1)varray.o):
      	Rename rules; delete commands; fix dependencies.
      	(mostlyclean): Do not delete temporary source copies.
      	* configure.ac: Delete all references to BUILD_PREFIX and
      	BUILD_PREFIX_1.
      	* configure: Regenerate.
      
      	* print-rtl.c: Include bconfig.h #ifdef GENERATOR_FILE.
      	Do not include tree.h, real.h, flags.h, hard-reg-set.h, or
      	basic-block.h #ifdef GENERATOR_FILE.  Surround some more code
      	with #ifndef GENERATOR_FILE so that nothing from those headers
      	is used.
      
      	* rtl.c, varray.c: Include bconfig.h #ifdef GENERATOR_FILE.
      
      From-SVN: r86083
      Zack Weinberg committed
  22. 14 Aug, 2004 1 commit
  23. 29 Jul, 2004 1 commit
    • rtl.c (currently_expanding_to_rtl): New. · 4586b4ca
      	* rtl.c (currently_expanding_to_rtl): New.
      	* rtl.h (currently_expanding_to_rtl): Export it.
      	* cfgexpand.c (tree_cfg_expand): Set/clear it at entry/exit.
      
      	* config/alpha/alpha.c (alpha_expand_mov): Remove old RTL
      	inliner hack.
      	* config/sh/sh.c: Replace rtx_equal_function_value_matters
      	with currently_expanding_to_rtl.
      	* config/sh/sh.md: Likewise.
      	* config/ia64/ia64.c (got_symbolic_operand): Likewise.
      
      From-SVN: r85287
      Steven Bosscher committed
  24. 27 Jul, 2004 1 commit
    • cfgexpand.c (tree_expand_cfg): Fix comment. · 3fbd86b1
      	* cfgexpand.c (tree_expand_cfg): Fix comment.
      
      	* calls.c (expand_call): Ignore rtx_equal_function_value_matters.
      	* function.c (purge_single_hard_subreg_set, purge_hard_subreg_sets):
      	Remove.
      	(prepare_function_start): Don't set rtx_equal_function_value_matters.
      	* integrate.c (copy_rtx_and_substitute): Don't test for it.
      	* passes.c (rest_of_compilation): Don't call purge_hard_subreg_sets.
      	Don't set rtx_equal_function_value_matters.  Don't register RTL hooks
      	here again.  Update leading comment.
      	* rtl.c (rtx_equal_function_value_matters): Remove.
      	(rtx_equal_p): Don't test for it.
      	* simplify-rtx.c (simplify_binary_operation, simplify_subreg):
      	Likewise.
      
      	* rtl.h (enum insn_note): Remove NOTE_INSN_LOOP_END_TOP_COND.
      	* rtl.c (note_insn_name): Likewise.
      	* emit-rtl.c (remove_unnecessary_notes): Don't handle it.
      	* final.c (final_scan_insn): Likewise.
      
      	* except.c (finish_eh_generation): Don't call cfg_cleanup from here.
      	* passes.c (rest_of_handle_eh): Do it here.
      
      	* stmt.c (struct nesting): Remove struct nesting block member.
      	(struct stmt_status): Remove x_block_start_count field.
      	(current_block_start_count): Remove.
      
      From-SVN: r85228
      Steven Bosscher committed
  25. 25 Jul, 2004 1 commit
    • basic-block.h (reorder_block_def): Rename to reorder_block_def_p. · 28dab132
      	* basic-block.h (reorder_block_def): Rename to reorder_block_def_p.
      	* c-common.c: Add missing casts from void * to other types.
      	* c-decl.c: Likewise.
      	* c-format.c: Likewise.
      	* c-lex.c: Likewise.
      	* c-pragma.c: Likewise.
      	* c-typeck.c: Likewise.
      	* defaults.h: Likewise.
      	* genconstants.c: Likewise.
      	* gengtype-lex.l: Likewise.
      	* genmodes.c: Likewise.
      	* read-rtl.c: Likewise.
      	* rtl.c: Likewise.
      
      From-SVN: r85166
      Bernardo Innocenti committed
  26. 21 Jul, 2004 1 commit
    • rtl.h (insn_note): Remove NOTE_INSN_PREDICTION. · 07a236b6
      	* rtl.h (insn_note): Remove NOTE_INSN_PREDICTION.
      	* rtl.c (note_insn_name): Likewise.
      	* print-rtl.c (print_rtx): Don't print it.
      	* cfgrtl.h (can_delete_note_p): Don't handle it.
      	(rtl_delete_block): Likewise.
      	* passes.c (rest_of_handle_guess_branch_prob): Remove.
      	(rest_of_compilation): Don't call it.
      	* predict.c (process_note_predictions, process_note_prediction,
      	note_prediction_to_br_prob): Remove.
      	* basic-block.c (note_prediction_to_br_prob): Remove prototype.
      	* stmt.c (return_prediction): Remove.
      	(expand_value_return): Don't call it.  Don't add prediction
      	notes for return statements.
      
      From-SVN: r85016
      Steven Bosscher committed
  27. 17 Jul, 2004 1 commit
    • cfgcleanup.c (try_simplify_condjump): Don't remove line notes to avoid unreachable code warnings. · 165b54c3
      	* cfgcleanup.c (try_simplify_condjump): Don't remove line
      	notes to avoid unreachable code warnings.
      	* toplev.c (backend_init): Don't emit line notes for
      	unreachable code warnings.
      
      	* combine.c (distribute_notes): Don't distribute a
      	REG_VTABLE_REF note.
      	* final.c (final_scan_insn): Don't handle it.
      	* rtl.c (reg_note_name): Remove it.
      	* rtl.h (enum reg_node): Dito.
      
      	* emit-rtl.c (force_line_numbers, restore_line_number_status):
      	Remove.
      	* rtl.h (force_line_numbers, restore_line_number_status):
      	Remove prototypes.
      
      	* stmt.c (using_eh_for_cleanups_p, using_eh_for_cleanups): Move...
      	* tree-eh.c (using_eh_for_cleanups_p): ...here.  Make static.
      	(using_eh_for_cleanups): Also moved here.
      
      	* expr.c (expand_expr_real_1) <CASE_LABEL_EXPR>: Die if we see one.
      	<SWITCH_EXPR>: Die if we have a non-NULL SWITCH_BODY.  Update calls
      	to expand_start_case and add_case_node.
      	* stmt.c (struct nesting): Cleanup unused fields condition_code,
      	last_unconditional_cleanup, nominal_type, printname, and
      	line_number_status.
      	(struct fixup_goto): Remove.
      	(struct stmt_status): Remove x_goto_fixup_chain field.
      	(goto_fixup_chain): Remove.
      	(strip_default_case_nodes, group_case_nodes, emit_jump_if_reachable,
      	pushcase, pushcase_range): Remove.
      	(expand_start_bindings_and_block): Don't set unused fields in
      	the nesting stack.
      	(expand_start_case, add_case_node): Cleanup unused formal arguments.
      	(expand_end_case_type): Don't simplify the case-list.  Use emit_jump
      	instead of emit_jump_if_reachable.
      	(emit_case_nodes): Likewise.
      	* tree-cfg.c (group_case_labels, cleanup_dead_labels): No longer
      	static.
      	(update_eh_label): Work around left-over exception handing regions.
      	* tree-flow.h (group_case_labels, cleanup_dead_labels): Add protos.
      	* tree-optimize.c (execute_cleanup_cfg_post_optimizing): New function.
      	(pass_cleanup_cfg_post_optimizing): New pass.
      	(init_tree_optimization_passes): Run the new pass after all
      	optimizations.
      	* tree.h (pushcase, pushcase_range): Remove prototypes.
      	(expand_start_case, add_case_node): Update prototypes.
      
      cp/
      	* cp-tree.h (struct lang_type): Don't have three GTY options on a
      	single bit GTY desc.
      
      java/
      	* parse.y (java_complete_expand_methods, java_expand_classes): Don't
      	abuse restore_line_number_status.
      
      From-SVN: r84849
      Steven Bosscher committed
  28. 14 Jul, 2004 1 commit
    • expr.c (enqueue_insn, [...]): Remove. · ad76cef8
      2004-07-14  Paolo Bonzini  <bonzini@gnu.org>
      
      	* expr.c (enqueue_insn, finish_expr_for_function,
      	protect_from_queue, queued_subexp_p, mark_queue,
      	emit_insns_enqueued_after_mark, emit_queue,
      	expand_increment): Remove.
      	(store_constructor): Expand increment as an assignment.
      	(expand_expr_real_1 <case PREINCREMENT_EXPR,
      	case PREDECREMENT_EXPR, case POSTINCREMENT_EXPR,
      	case POSTDECREMENT_EXPR>): Abort.
      	* expr.h (QUEUED_VAR, QUEUED_INSN, QUEUED_COPY,
      	QUEUED_BODY, QUEUED_NEXT, finish_expr_for_function,
      	protect_from_queue, emit_queue, queued_subexp_p): Remove.
      	* function.h (pending_chain, x_pending_chain): Remove.
      	* rtl.def (QUEUED): Remove.
      
      	* emit-rtl.c (copy_insn_1, copy_most_rtx,
      	set_used_flags, verify_rtx_sharing): Remove references to QUEUED.
      	* genattrtab.c (attr_copy_rtx, clear_struct_flag,
      	encode_units_mask): Likewise.
      	* local-alloc.c (equiv_init_varies_p): Likewise.
      	* rtl.c (copy_rtx): Likewise.
      	* rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
      	* simplify-rtx.c (simplify_gen_subreg): Likewise.
      	* config/mn10300/mn10300.c (legitimate_pic_operand_p): Likewise.
      
      	* builtins.c (expand_builtin, expand_builtin_apply,
      	expand_builtin_mathfn, expand_builtin_mathfn_2,
      	expand_builtin_mathfn_3, expand_builtin_setjmp_setup):
      	Remove calls to emit_queue and protect_from_queue.
      	* calls.c (expand_call, precompute_arguments,
      	precompute_register_parameters, rtx_for_function_call,
      	store_one_arg): Likewise.
      	* dojump.c (do_compare_and_jump, do_jump): Likewise.
      	* explow.c (memory_address): Likewise.
      	* expmed.c (clear_by_pieces_1, clear_storage,
      	clear_storage_via_libcall, emit_group_load,
      	emit_group_store, emit_store_flag,
      	expand_expr_real_1, store_by_pieces,
      	store_constructor, store_expr, try_casesi,
      	try_tablejump): Likewise.
      	* function.c (expand_pending_sizes): Likewise.
      	* optabs.c (emit_cmp_and_jump_insns,
      	emit_conditional_add, emit_conditional_move,
      	expand_fix, expand_float, prepare_cmp_insn): Likewise.
      	* stmt.c (emit_case_bit_tests,
      	expand_asm_expr, expand_computed_goto,
      	expand_decl_init, expand_end_case_type,
      	expand_end_stmt_expr, expand_expr_stmt_value,
      	expand_return, expand_start_case,
      	optimize_tail_recursion): Likewise.
      	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
      	* config/s390/s390.c (s390_expand_cmpmem): Likewise.
      
      From-SVN: r84675
      Paolo Bonzini committed
  29. 04 Jul, 2004 1 commit
    • rtl.def (ADDRESSOF): Remove. · 8fff4fc1
      	* rtl.def (ADDRESSOF): Remove.
      	* alias.c (rtx_equal_for_memref_p): Don't handle addressof.
      	(find_base_term, memrefs_conflict_p): Likewise.
      	* cse.c (fixed_base_plus_p, find_best_addr: Likewise.
      	(fold_rtx, cse_insn, set_live_p): Likewise.
      	* dwarf2out.c (mem_loc_descriptor): Likewise.
      	(add_location_or_const_value_attribute): Likewise.
      	* emit-rtl.c (copy_insn_1): Likewise.
      	* explow.c (memory_address): Likewise.
      	* expmed.c (store_split_bit_field): Likewise.
      	* expr.c (expand_expr_real_1): Likewise.
      	* function.c (instantiate_decl
      	(instantiate_virtual_regs_1, fix_lexical_addr): Likewise.
      	* genrecog.c (preds, validate_pattern): Likewise.
      	* integrate.c (copy_rtx_and_substitute): Likewise.
      	* recog.c (general_operand, register_operand): Likewise.
      	(memory_address_p): Likwise.
      	* reload1.c (eliminate_regs, elimination_effects): Likewise.
      	* rtl.c (copy_rtx): Likewise.
      	* rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
      	(rtx_addr_can_trap_p, nonzero_address_p, address_cost): Likewise.
      	* rtlhooks.c (gen_lowpart_general): Likewise.
      	* stmt.c (expand_asm_operands): Likewise.
      	* web.c (entry_register, replace_ref, web_main): Likewise.
      	* config/alpha/alpha.c (input_operand, alpha_legitimate_address_p,
      	alpha_expand_block_move, alpha_expand_block_clear): Likewise.
      	* config/arm/arm.c (thumb_rtx_costs): Likewise.
      	* config/c4x/c4x.c (c4x_valid_operands): Likewise.
      	* config/frv/frv.c (move_destination_operand, move_source_operand,
      	condexec_dest_operand, condexec_source_operand,
      	condexec_memory_operand): Likewise.
      	* config/h8300/h8300.h (PREDICATE_CODES): Likewise.
      	* config/ia64/ia64.c (general_xfmode_operand): Likewise.
      	(destination_xfmode_operand): Likewise.
      	* config/mips/mips.h (PREDICATE_CODES): Likewise.
      	* config/mn10300/mn10300.c (mn10300_address_cost_1): Likewise.
      	* config/s390/s390.c (general_s_operand): Likewise.
      	* config/s390/s390.md (mov*): Likewise.
      	* config/sparc/sparc.h (PREDICATE_CODES): Likewise.
      
      	* c-typeck.c (c_mark_addressable): Don't put_var_into_stack.
      	* expr.c (expand_expr_real_1): Likewise.
      	* stmt.c (expand_decl): Likewise.
      	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
      
      	* function.c (struct fixup_replacement, struct insns_for_mem_entry,
      	postponed_insns, put_var_into_stack, put_reg_into_stack,
      	schedule_fixup_var_refs, fixup_var_refs, find_fixup_replacement,
      	fixup_var_refs_insns, fixup_var_refs_insns_with_hash,
      	fixup_var_refs_insn, fixup_var_refs_1, fixup_memory_subreg,
      	walk_fixup_memory_subreg, fixup_stack_1, optimize_bit_field,
      	gen_mem_addressof, flush_addressof, put_addressof_into_stack,
      	purge_bitfield_addressof_replacements, purge_addressof_replacements,
      	purge_addressof_1, insns_for_mem_hash, insns_for_mem_comp,
      	struct insns_for_mem_walk_info, insns_for_mem_walk,
      	compute_insns_for_mem, is_addressof, purge_addressof, setjmp_protect,
      	setjmp_protect_args): Remove.
      	(push_function_context_to): Don't handle var_refs_queue.
      	(pop_function_context_from, free_after_compilation): Likewise.
      	(instantiate_virtual_regs): Don't handle parm_reg_stack_loc.
      	(assign_parms, allocate_struct_function): Likewise.
      	(use_register_for_decl): New.
      	(expand_function_end): Don't setjmp_protect.
      	* function.h (struct emit_status): Update commentary.
      	(struct function): Remove x_max_parm_reg, x_parm_reg_stack_loc.
      	(max_parm_reg, parm_reg_stack_loc): Remove.
      	* passes.c (DFI_addressof): Remove.
      	(dump_file_info): Remove addressof.
      	(rest_of_handle_addressof): Remove.
      	(rest_of_compilation): Don't call it.
      	* rtl.h (ADDRESSOF_REGNO, ADDRESSOF_DECL): Remove.
      	* stmt.c (expand_decl): Use use_register_for_decl.
      	* tree.h: Update decls.
      	* web.c (mark_addressof): Remove.
      	* doc/invoke.texi (-dF): Remove.
      
      ada/
              * utils2.c (gnat_mark_addressable): Don't put_var_into_stack.
      cp/
              * typeck.c (cxx_mark_addressable): Don't put_var_into_stack.
      fortran/
              * f95-lang.c (gfc_mark_addressable): Don't put_var_into_stack.
      treelang/
              * treetree.c (tree_mark_addressable):  Don't put_var_into_stack.
      
      From-SVN: r84072
      Richard Henderson committed
  30. 09 Apr, 2004 1 commit
    • basic-block.h (struct edge_def): Add new field, crossing_edge. · 750054a2
      2004-04-09  Caroline Tice  <ctice@apple.com>
      
              * basic-block.h (struct edge_def):  Add new field, crossing_edge.
              (struct basic_block_def):  Add new field, partition.
              (UNPARTITIONED, HOT_PARTITION, COLD_PARTITION):  New constant macro
              definitions.
              (partition_hot_cold_basic_blocks): Add extern function
              declaration.
              * bb-reorder.c (function.h, obstack.h, expr.h, regs.h):  Add four new
              include statements.
              (N_ROUNDS): Increase the maximum number of rounds by 1.
              (branch_threshold): Add array value for new round.
              (exec_threshold): Add array value for new round.
              (push_to_next_round_p): New function.
              (add_unlikely_executed_notes): New function.
              (find_rarely_executed_basic_blocks_and_crossing_edges): New function.
              (mark_bb_for_unlikely_executed_section): New function.
              (add_labels_and_missing_jumps): New function.
              (add_reg_crossing_jump_notes): New function.
              (fix_up_fall_thru_edges): New function.
              (find_jump_block): New function.
              (fix_crossing_conditional_branches): New function.
              (fix_crossing_unconditional_branches): New function.
              (fix_edges_for_rarely_executed_code): New function.
              (partition_hot_cold_basic_blocks): New function.
              (find_traces):  Add an extra round for partitioning hot/cold
              basic blocks.
              (find_traces_1_round): Add a parameter.  Modify to push all cold blocks,
              and only cold blocks, into the last (extra) round of collecting traces.
              (better_edge_p): Add a parameter.  Modify to favor non-crossing edges
              over crossing edges.
              (bb_to_key):  Add code to correctly identify cold blocks when
              doing partitioning.
              (connect_traces): Modify to connect all the non-cold traces first, then
              go back and connect up all the cold traces.
              (reorder_basic_blocks):  Add call to add_unlikely_executed_notes.
              * cfg.c (entry_exit_blocks): Add initialization for partition field in
              entry and exit blocks.
              * cfgbuild.c (make_edges): Update current_function_has_computed_jump
              if we are doing hot/cold partitioning.
              * cfgcleanup.c (cfglayout.h): Add new include statement.
              (try_simplify_condjump): Modify to not attempt on blocks with jumps
              that cross section boundaries.
              (try_forward_edges): Likewise.
              (merge_blocks_move_predecessor_nojumps): Likewise.
              (merge_blocks_move_successor_nojumps): Likewise.
              (merge_blocks_move): Likewise.
              (try_crossjump_to_edge): Modify to not attempt after we have done
              the block partitioning.
              (try_crossjump_bb): Modify to not attempt on blocks with jumps that
              cross section boundaries.
              (try_optimize_cfg): Likewise.
              * cfghooks.c (tidy_fallthru_edges): Modify to not remove indirect
              jumps that cross section boundaries.
              * cfglayout.c (flags.h): Add new include statement.
              (update_unlikely_executed_notes):  New function.
              (fixup_reorder_chain):  Add code so when a new jumping basic block is
              added, it's UNLIKELY_EXECUTED_CODE and REG_CROSSING_JUMP notes are
              updated appropriately.
              (duplicate_insn_chain):  Add code to duplicate the new NOTE insn
              introduced by this optimization.
              * cfglayout.h (scan_ahead_for_unlikely_executed_note):  Add new
              extern function declaration.
              * cfgrtl.c (can_delete_note_p):  Add NOTE_INSN_UNLIKELY_EXECUTED_CODE to
              list of notes that can be deleted.
              (create_basic_block_structure):  Add initialization for partition field.
              (rtl_can_merge_blocks):  Modify to test blocks for jumps that cross
              section boundaries.
              (try_redirect_by_replacing_jump):  Modify to not attempt on jumps that
              cross section boundaries.
              (commit_one_edge_insertion): Add code so newly created basic block
              ends up in correct (hot or cold) section.  Modify to disallow
              insertions before NOTE_INSN_UNLIKELY_EXECUTED_CODE notes.
              (rtl_verify_flow_info_1):  Add code to verify that no fall_thru edge
              crosses section boundaries.
              (cfg_layout_can_merge_blocks_p): Modify to test blocks for jumps that
              cross section boundaries.
              (force_nonfallthru_and_redirect): Modify to make sure new basic block
              ends up in correct section, with correct notes attached.
              * common.opt (freorder-blocks-and-partition):  Add new flag for this
              optimization.
              * dbxout.c (dbx_function_end):  Add code to make sure scope labels at
              the end of functions are written into the correct (hot or cold)
              section.
              (dbx_source_file): Add code so writing debug file information
              doesn't incorrectly change sections.
              * defaults.h (NORMAL_TEXT_SECTION_NAME): New constant macro, for use
              in partitioning hot/cold basic blocks into separate sections.
              (SECTION_FORMAT_STRING): New constant macro, for linux/i386 hot/cold
              section partitioning.
              (HAS_LONG_COND_BRANCH): New constant macro, indicating whether or not
              conditional branches can span all of memory.
              (HAS_LONG_UNCOND_BRANCH): New constant macro, indicationg whether or not
              unconditional branches can span all of memory.
              * final.c (scan_ahead_for_unlikely_executed_note):  New function.
              (final_scan_insn):  Add code to check for NOTE instruction indicating
              whether basic block belongs in hot or cold section, and to make sure
              the current basic block is being written to the appropriate section.
              Also added code to ensure that jump table basic blocks end up in the
              correct section.
              * flags.h (flag_reorder_blocks_and_partition):  New flag.
              * ifcvt.c (find_if_case_1):  Modify to not attempt if conversion if
              one of the branches has a jump that crosses between sections.
              (find_if_case_2): Likewise.
              (ifcvt): Modify to not attempt to mark loop exit edges after
              hot/cold partitioning has occurred.
              * opts.c (decode_options): Code to handle new flag,
              flag_reorder_blocks_and_partition; also to turn it off if
              flag_exceptions is on.
              (common_handle_option): Code to handle new flag,
              flag_reorder_blocks_and_partition.
              * output.h (unlikely_text_section): New extern function declaration.
              (in_unlikely_text_section): New extern function declaration.
              * passes.c (rest_of_handle_stack_regs):  Add
              flag_reorder_blocks_and_partition as an 'or' condition for calling
              reorder_basic_blocks.
              (rest_of_handle_reorder_blocks):  Add flag_reorder_blocks_and_partition
              as an 'or' condition for calling reorder_basic_blocks.
              (rest_of_compilation):  Add call to partition_hot_cold_basic_blocks.
              * print-rtl.c (print_rtx): Add code for handling new note,
              NOTE_INSN_UNLIKELY_EXECUTED_CODE
              * rtl.c  (NOTE_INSN_UNLIKELY_EXECUTED_CODE): New note insn (see below).
              (REG_CROSSING_JUMP): New kind of reg_note, to mark jumps that
              cross between section boundaries.
              * rtl.h (NOTE_INSN_UNLIKELY_EXECUTED_CODE):  New note instruction,
              indicating the basic block containing it belongs in the cold section.
              (REG_CROSSING_JUMP): New type of reg_note, to mark jumps that cross
              between hot and cold sections.
              * toplev.c (flag_reorder_blocks_and_partition):  Add code to
              initialize this flag, and to tie it to the command-line option
              freorder-blocks-and-partition.
              * varasm.c (cfglayout.h):  Add new include statement.
              (unlikely_section_label_printed):  New global variable, used for
              determining when to output section name labels for cold sections.
              (in_section):  Add in_unlikely_executed_text to enum data structure.
              (text_section):  Modify code to use SECTION_FORMAT_STRING and
              NORMAL_TEXT_SECTION_NAME macros.
              (unlikely_text_section):  New function.
              (in_unlikely_text_section):  New function.
              (function_section):  Add code to make sure beginning of function is
              written into correct section (hot or cold).
              (assemble_start_function):  Add code to make sure stuff is written to
              the correct section.
              (assemble_zeros):  Add in_unlikely_text_section as an 'or' condition
              to an if statement that was checking 'in_text_section'.
              (assemble_variable):  Add 'in_unlikely_text_section' as an 'or'
              condition to an if statement that was checking 'in_text_section'.
              (default_section_type_flags_1):  Add check: if in cold section
              flags = SECTION_CODE.
              * config/darwin.c (darwin_asm_named_section):  Modify to use
              SECTION_FORMAT_STRING if we are partitioning hot/cold blocks.
              * config/i386/i386.h (HAS_LONG_COND_BRANCH): Defined this macro
              specifically for the i386.
              (HAS_LONG_UNCOND_BRANCH):  Defined this macro specifically for the i386.
              * config/rs6000/darwin.h (UNLIKELY_EXECUTED_TEXT_SECTION_NAME): Change
              text string to something more informative.
              (NORMAL_TEXT_SECTION_NAME): Add new definition.
              (SECTION_FORMAT_STRING):  Add new definition.
              * config/rs6000/rs6000.c (rs6000_assemble_integer):  Add
              '!in_unlikely_text_section' as an 'and' condition to an if statement
              that was already checking '!in_text_section'.
              * config/rs6000/sysv4.h (HOT_TEXT_SECTION_NAME,NORMAL_TEXT_SECTION_NAME,
              UNLIKELY_EXECUTED_TEXT_SECTION_NAME,SECTION_FORMAT_STRING): Make
              sure these are properly defined for linux on ppc.
              * doc/invoke.texi  (freorder-blocks-and-partition): Add documentation
              for this new flag.
              * doc/rtl.texi (REG_CROSSING_JUMP):  Add documentation for new
              reg_note.
              * doc/tm.texi (NORMAL_TEXT_SECTION_NAME, SECTION_FORMAT_STRING,
              HAS_LONG_COND_BRANCH, HAS_LONG_UNCOND_BRANCH): Add documentation for
              these new macros.
      
      From-SVN: r80564
      Caroline Tice committed
  31. 03 Mar, 2004 2 commits
    • ggc-common.c (ggc_alloc_cleared_stat, [...]): Rename from ...; make statistics transparent. · b9dcdee4
      	* ggc-common.c (ggc_alloc_cleared_stat, ggc_realloc_stat):
      	Rename from ...; make statistics transparent.
      	(ggc_alloc_cleared, ggc_realloc_stat): ... these.
      	(loc_descriptor): New structure.
      	(hash_descriptor, eq_descriptor, loc_descriptor, cmp_statistics,
      	add_statistics):
      	New static function.
      	(ggc_record_overhead, dump_statistics): New global function.
      	* ggc-none.c (ggc_alloc_types_stat, ggc_alloc_stat, ggc_alloc_zone_stat,
      	ggc_alloc_cleared_stat, ggc_realloc_stat, ggc_alloc_typed_stat): Rename
      	from ...; accept locations
      	(ggc_alloc_types, ggc_alloc, ggc_alloc_zone, ggc_alloc_cleared,
      	ggc_realloc, ggc_alloc_typed):  ... this one.
      	from ...; accept locations
      	* ggc-page.c (ggc_alloc_typed_stat, ggc_alloc_zone_stat,
      	ggc_alloc_stat): Rename from ... ; pass locations
      	* ggc-page.c (ggc_alloc_typed, ggc_alloc_zone, ggc_alloc):
      	... this one.
      	(ggc_alloc_stat): Record overehead.
      	* ggc.h (ggc_alloc_types, ggc_alloc, ggc_alloc_zone, ggc_alloc_cleared,
      	ggc_realloc, ggc_alloc_typed):  Turn to macros
      	(ggc_alloc_types_stat, ggc_alloc_stat, ggc_alloc_zone_stat,
      	ggc_alloc_cleared_stat, ggc_realloc_stat, ggc_alloc_typed_stat): Declare.
      	(dump_ggc_loc_satistics, ggc_record_overehead): Declare.
      	* langhooks.h (lhd_make_node): Declare.
      	(LANG_HOOKS_MAKE_TYPE): Default to new function,
      	* langhooks.c (lhd_make_node): New.
      	* rtl.c (rtx_alloc_stat, swallow_copy_rtx_stat): Rename from ... ; pass
      	locations.
      	(rtx_alloc, swallow_copy_rtx): ... this one.
      	* rtl.h (rtx_alloc, swallow_copy_rtx): Turn to macros.
      	* rtl.c (rtx_alloc_stat, swallow_copy_rtx_stat): Declare.
      	* toplpev.c (finalize): Dump stats.
      	* tree.c (make_node_stat, copy_node_stat, make_tree_vec_stat,
      	build_tree_list_stat, tree_cons_stat, build?_stat,  build_decl_stat):
      	Rename from ... ; pass locators.
      	(make_node, copy_node, make_tree_vec, build_tree_list, tree_cons,
      	build?,  build_decl): Declare.
      	* tree.h (make_node_stat, copy_node_stat, make_tree_vec_stat,
      	build_tree_list_stat, tree_cons_stat, build?_stat,  build_decl_stat):
      	Declare.
      	(make_node, copy_node, make_tree_vec, build_tree_list, tree_cons,
      	build?,  build_decl): New macros.
      	* Makefile.in (RTL_H, TREE_H): Add statistics.h dependency.
      	* statistics.h: New file.
      
      From-SVN: r78826
      Jan Hubicka committed
    • alias.c (rtx_equal_for_memref_p): Use predicates to test rtx classes and new rtx class codes... · ec8e098d
      2004-02-07  Paolo Bonzini  <bonzini@gnu.org>
      
      	* alias.c (rtx_equal_for_memref_p): Use predicates
      	to test rtx classes and new rtx class codes, possibly
      	splitting conditionals that tested against '<' and 'o'.
      	* caller-save.c (save_call_clobbered_regs): Likewise.
      	* combine.c (contains_muldiv, find_split_point, subst,
      	combine_simplify_rtx, simplify_if_then_else,
      	simplify_set, simplify_logical, expand_compound_operation,
      	make_compound_operation, if_then_else_cond, known_cond,
      	apply_distributive_law, cached_nonzero_bits,
      	cached_num_sign_bit_copies, simplify_shift_const,
      	gen_binary, simplify_comparison, update_table_tick,
      	record_value_for_reg, get_lsat_value_validate): Likewise.
      	* cse.c (mention_regs, find_best_addr, find_comparison_args,
      	fold_rtx, cse_insn, invalidate_memory, cse_basic_block):
      	Likewise.
      	* emit-rtl.c (copy_insn_1): Likewise.
      	* expr.c (force_operand): Likewise.
      	* final.c (final_scan_insn, get_mem_expr_from_op): Likewise.
      	* flow.c (notice_stack_pointer_modification_1,
      	invalidate_mems_from_autoinc, ior_reg_cond, not_reg_cond,
      	and_reg_cond, elim_reg_cond): Likewise.
      	* function.c (update_epilogue_consts): Likewise.
      	* genattrtab.c (attr_rtx_1): Likewise.
      	* genopinit.c (gen_insn): Likewise.
      	* integrate.c (subst_constants): Likewise.
      	* jump.c (reversed_comparison_code_parts,
      	reversed_comparison_code, delete_related_insns,
      	rtx_renumbered_equal_p): Likewise.
      	* local-alloc.c (block_alloc): Likewise.
      	* loop.c (rtx_equal_for_prefetch_p, maybe_eliminate_biv,
      	canonicalize_condition): Likewise.
      	* loop-iv.c (simplify_using_conditions, iv_number_of_iterations):
      	Likewise.
      	* optabs.c (add_equal_node, expand_binop): Likewise.
      	* predict.c (estimate_probability): Likewise.
      	* ra-debug.c (ra_print_rtx_2op, ra_print_rtx): Likewise.
      	* recog.c (validate_replace_rtx_1, comparison_operator,
      	offsettable_address_p, constrain_operands): Likewise.
      	* reg-stack.c (swap_rtx_condition_1, subst_stack_regs_pat):
      	Likewise.
      	* regclass.c (scan_one_insn): Likewise.
      	* regmove.c (stable_and_no_regs_but_for_p): Likewise.
      	* regrename.c (kill_autoinc_value): Likewise.
      	* reload.c (find_reusable_reload, find_reloads,
      	reg_overlap_mentioned_for_reload_p): Likewise.
      	* reload1.c (gen_reload, delete_address_reloads_1): Likewise.
      	* rtl.c (copy_rtx): Likewise.
      	* rtl.h (CONSTANT_P, INSN_P): Likewise.
      	* rtlanal.c (commutative_operand_precedence): Likewise.
      	* sched-deps.c (conditions_mutex_p): Likewise.
      	* sched-rgn.c (is_cfg_nonregular): Likewise.
      	* simplify-rtx.c (simplify_gen_binary,
      	simplify_gen_relational, simplify_replace_rtx,
      	simplify_unary_operation, simplify_binary_operation,
      	simplify_ternary_operation, simplify_rtx): Likewise.
      	* unroll.c (reg_dead_after_loop): Likewise.
      	* config/alpha/alpha.c (alpha_swapped_comparison_operator,
      	print_operand): Likewise.
      	* config/arc/arc.c (proper_comparison_operator): Likewise.
      	* config/arm/arm.c (arm_arm_address_cost, arm_select_cc_mode):
      	Likewise.
      	* config/avr/avr.c (_reg_unused_after): Likewise.
      	* config/frv/frv.c (frv_ifcvt_modify_tests,
      	frv_ifcvt_modify_insn, frv_pack_insn): Likewise.
      	* config/i386/i386.c (ix86_comparison_operator,
      	ix86_carry_flag_operator, fcmov_comparison_operator,
      	arith_or_logical_operator, print_operand,
      	ix86_expand_binary_operator, ix86_binary_operator_ok):
      	Likewise.
      	* config/i386/i386.md: Likewise.
      	* config/ia64/ia64.c (not_postinc_memory_operand,
      	ia64_print_operand, update_set_flags, errata_emit_nops):
      	Likewise.
      	* config/ia64/ia64.h (PREFERRED_RELOAD_CLASS,
      	CONSTRAINT_OK_FOR_S): Likewise.
      	* config/ip2k/ip2k.c (mdr_resequence_xy_yx,
      	mdr_try_move_dp_reload, ip2k_check_can_adjust_stack_ref,
      	ip2k_xexp_not_uses_reg_for_mem, ip2k_xexp_not_uses_reg_p,
      	ip2k_composite_xexp_not_uses_reg_p, ip2k_unary_operator):
      	Likewise.
      	* config/iq2000/iq2000.c (cmp_op, symbolic_expression_p,
      	eqne_comparison_operator, signed_comparison_operator):
      	Likewise.
      	* config/mips/mips.c (cmp_op, symbolic_expression_p):
      	Likewise.
      	* config/mmix/mmix (mmix_foldable_comparison_operator,
      	mmix_comparison_operator): Likewise.
      	* config/pa/pa.c (hppa_legitimize_address): Likewise.
      	* config/rs6000/rs6000.c (stmw_operation,
      	branch_comparison_operator, trap_comparison_operator,
      	ccr_bit): Likewise.
      	* config/rs6000/rs6000.h (SELECT_CC_MODE): Likewise.
      	* config/s390/s390.c (s390_alc_comparison,
      	s390_slb_comparison):L Likewise.
      	* config/sh/sh.c (gen_block_redirect, reg_unused_after):
      	Likewise.
      	* config/sparc/sparc.c (eq_or_neq, normal_comp_operator,
      	noov_compare_op, noov_compare64_op, v9_regcmp_op,
      	emit_hard_tfmode_operation, reg_unused_after)
      	* doc/md.texi, doc/rtl.texi: Likewise.
      
      	* ra-debug.c: Add 2004 to list of copyright years.
      	* unroll.c: Likewise.
      
      	* combine.c (simplify_logical): Remove dummy test,
      	(apply_distributive_law): Fix typo in comment.
      	GET_CODE (x) == AND so x is a commutative binary op.
      	* jump.c (delete_related_insns): simplify loop
      	condition, move testing of RTX codes inside the loop.
      	(rtx_renumbered_equal_p): do not use RTX_CODE.
      	* rtl.c (rtx_class): Declare as enum rtx_class.
      	* rtl.def (EQ, NE, UNEQ, LTGT, UNORDERED, ORDERED):
      	Move to RTX_COMM_COMPARE class.
      	(HIGH, SYMBOL_REF, LABEL_REF, CONST, CONST_INT, CONST_DOUBLE):
      	Move to RTX_CONST_OBJ class.
      	* rtl.h (enum rtx_class): New declaration,
      	(RTX_OBJ_MASK, RTX_OBJ_RESULT, RTX_COMPARE_MASK,
      	RTX_COMPARE_RESULT, RTX_ARITHMETIC_MASK, RTX_ARITHMETIC_RESULT,
      	RTX_BINARY_MASK, RTX_BINARY_RESULT, RTX_COMMUTATIVE_MASK,
      	RTX_COMMUTATIVE_RESULT, RTX_NON_COMMUTATIVE_RESULT,
      	RTX_EXPR_FIRST, RTX_EXPR_LAST, UNARY_P, BINARY_P,
      	ARITHMETIC_P, COMMUTATIVE_ARITHMETIC_P, COMPARISON_P,
      	SWAPPABLE_OPERANDS_P, NON_COMMUTATIVE_P, COMMUTATIVE_P,
      	OBJECT_P): New macros.
      	* config/sparc/sparc.c (noov_compare_op): Remove register
      	from parameter.
      
      From-SVN: r78824
      Paolo Bonzini committed
  32. 27 Feb, 2004 1 commit
  33. 06 Feb, 2004 1 commit
    • Josef Zlomek <zlomekj@suse.cz> · 014a1138
      	Josef Zlomek  <zlomekj@suse.cz>
      	* Makefile.in (var-tracking.o): New.
      	* common.opt (fvar-tracking): New.
      	* flags.h (flag_var_tracking): New.
      	* gengtype.c (adjust_field_rtx_def): NOTE_INSN_VAR_LOCATION was added.
      	* opts.c (common_handle_option): Add OPT_fvar_tracking.
      	* print-rtl.c (print_rtx): NOTE_INSN_VAR_LOCATION was added.
              * rtl.c (note_insn_name): Likewise.
              * rtl.def (VAR_LOCATION): New.
              * rtl.h (NOTE_VAR_LOCATION): New.
              (NOTE_VAR_LOCATION_DECL): New.
              (NOTE_VAR_LOCATION_LOC): New.
              (enum insn_note): NOTE_INSN_VAR_LOCATION was added.
              (variable_tracking_main): New exported function.
              * timevar.def (TV_VAR_TRACKING): New.
              * toplev.c (enum dump_file_index): Added DFI_vartrack.
              (dump_file): "vartrack" was added (-dV).
              (flag_var_tracking): New.
              (f_options): "var-tracking" was added.
      	(rest_of_handle_variable_tracking): New function.
              (rest_of_compilation): Run variable tracking.
      	(process_options): If user has not specified flag_var_tracking set it
      	according to optimize, debug_info_level and debug_hooks.
      	* tree.h (frame_base_decl): New.
              * var-tracking.c: New file.
      	* config/ia64/ia64.c (ia64_flag_var_tracking): New variable.
      	(ia64_override_options): Set flags to run variable tracking in machine
      	dependent reorg instead of toplev.c.
      	(ia64_reorg): Run variable tracking if wanted.
              * doc/invoke.texi: Mention variable tracking in -dV,
      	add and -fvar-tracking.
              * doc/passes.texi: Added variable tracking pass.
      
      	Daniel Berlin <dberlin@dberlin.org>
      	* debug.h (struct gcc_debug_hooks): Added var_location debug hook.
      	* dbxout.c (dbx_debug_hooks): Likewise.
      	(xcoff_debug): Likewise.
      	* debug.c (do_nothing_debug_hooks): Likewise.
      	* dwarf2out.c (dwarf2_debug_hooks): Likewise.
      	* dwarfout.c (dwarf_debug_hooks): Likewise.
      	* sdbout.c (sdb_debug_hooks): Likewise.
      	* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
      	* final.c (final_scan_insn): Call var_location debug hook for each
      	NOTE_INSN_VAR_LOCATION.
      
      Co-Authored-By: Daniel Berlin <dberlin@dberlin.org>
      
      From-SVN: r77418
      Josef Zlomek committed
  34. 21 Jan, 2004 1 commit
    • alias.c, [...]: Update copyright. · d9221e01
      	* alias.c, basic-block.h, c-common.c, c-common.h,
      	c-cppbuiltin.c, c-opts.c, c-pragma.c, c-pretty-print.c,
      	calls.c, cfg.c, cfgcleanup.c, cfgrtl.c, cgraph.h, collect2.c,
      	combine.c, cppcharset.c, cpphash.h, cppinit.c, cpplib.c,
      	cpplib.h, cppmacro.c, crtstuff.c, cselib.c, cselib.h,
      	defaults.h, df.c, dominance.c, et-forest.c, expmed.c, expr.c,
      	expr.h, fix-header.c, function.h, gcc.c, gcse.c, genattrtab.c,
      	genautomata.c, genconditions.c, genemit.c, genflags.c,
      	gengtype.c, gengtype.h, genopinit.c, genrecog.c, gensupport.c,
      	ggc-zone.c, graph.c, haifa-sched.c, input.h, integrate.c,
      	langhooks-def.h, langhooks.c, langhooks.h, line-map.c,
      	line-map.h, local-alloc.c, optabs.c, optabs.h, postreload.c,
      	ra.h, recog.c, reg-stack.c, regmove.c, reload.c, reorg.c,
      	rtl.c, sched-deps.c, sched-ebb.c, sdbout.c, system.h,
      	target.h, targhooks.c, toplev.h, tree-inline.c, unwind-pe.h,
      	unwind.h, varray.c, varray.h: Update copyright.
      
      From-SVN: r76302
      Kazu Hirata committed
  35. 20 Jan, 2004 1 commit
  36. 22 Dec, 2003 1 commit
    • Patch from Dan Nicolaescu · 439a7e54
      * rtl.h (dump_rtx_statistics): Declare it.
      * rtl.c (rtx_alloc_counts, rtx_alloc_sizes, rtvec_alloc_counts,
      rtx_alloc_sizes): New static vars.
      (rtx_alloc, rtvec_alloc): Update them.
      (dump_rtx_statistics): New function.
      * toplev.c (finalize): Call it.
      * ggc-page.c (struct globals): Fix comments. Add new member
      total_allocated_per_order.
      (ggc_alloc): Keep track of the total allocated memory.
      (ggc_print_statistics): Clarify message. Print total allocated
      memory stats.
      * configure.in (gather-detailed-mem-stats): New flag.
      * configure: Regenerate.
      * config.in: Regenerate.
      * doc/install.texi (Configuration): Document
      --enable-gather-detailed-mem-stats.
      
      From-SVN: r74930
      Dan Nicolaescu committed
  37. 04 Dec, 2003 1 commit
  38. 18 Oct, 2003 1 commit
    • rtl.h (rtl_size): Declare. · e1de1560
      	* rtl.h (rtl_size): Declare.
      	(rtunion): Remove rtwint.
      	(rtx_def): Replace 'fld' with a union of an rtunion or a HOST_WIDE_INT.
      	(RTX_HDR_SIZE, RTX_SIZE): New macros.
      	(RTL_CHECK1): Adjust for new rtx_def layout.
      	(RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2): Likewise.
      	(XWINT, XCWINT): Likewise.  Access the rtx structure directly.
      	(X0WINT): Remove.
      	(X0ANY): New macro.
      	* rtl.def: Adjust comments for new rtx_def layout.
      	* ggc.h (ggc_alloc_rtx): Take the rtx code as argument, not the
      	number of slots.
      	* rtl.c (rtx_size): New array.
      	(rtx_alloc): Adjust call to ggc_alloc_rtx.  Use RTX_HDR_SIZE.
      	(copy_rtx): Use RTX_HDR_SIZE.  Adjust for new rtx_def layout.
      	(shallow_copy_rtx): Adjust call to ggc_alloc_rtx.  Use RTX_SIZE.
      	* integrate.c (copy_rtx_and_substitute): Use X0ANY to copy '0' fields.
      	* emit-rtl.c (copy_most_rtx): Likewise.
      	(copy_rtx_if_shared): Use RTX_SIZE.
      	(copy_insn_1): Use RTX_HDR_SIZE.  Adjust for new rtx_def layout.
      	* gengenrtl.c (gendef): Adjust ggc_alloc_rtx call.  Use RTX_HDR_SIZE.
      	* gengtype.c (write_rtx_next): Use RTX_HDR_SIZE.
      	(adjust_field_rtx_def): Expect "rtx_def" to be a union rather than
      	an array.  Adjust output for new rtx_def layout.
      	* ggc-page.c (RTL_SIZE): Use RTX_HDR_SIZE.
      	* reload1.c (eliminate_regs): Use RTX_SIZE.
      	* rtlanal.c (loc_mentioned_in_p): Adjust for new rtx_def layout.
      	* gdbinit.in (pi): Likewise.
      
      From-SVN: r72647
      Richard Sandiford committed
  39. 10 Oct, 2003 1 commit
    • genmodes.c, [...]: New files. · 0974c7d7
      	* genmodes.c, mode-classes.def: New files.
      	* machmode.def: Rewritten to genmodes.c interface.
      	* Makefile.in (extra_modes_file): New substitution variable.
      	(MACHMODE_H): No longer includes machmode.def or
      	@extra_modes_file@; instead, mode-classes.def and insn-modes.h.
      	(BUILD_RTL): Add $(BUILD_PREFIX)insn-modes.o.
      	(OBJS-common): Add insn-modes.o.
      	(STAGESTUFF): Add insn-modes.c, insn-modes.h, s-modes, and
      	genmodes$(build_exeext).
      	(insn-modes.o, insn-modes.c, insn-modes.h, s-modes, genmodes.o,
      	genmodes$(build_exeext), $(BUILD_PREFIX_1)insn-modes.o): New targets.
      	(s-genrtl): Don't depend on $(RTL_BASE_H).
      	(gengenrtl.o): Don't depend on coretypes.h, $(GTM_H), real.h,
      	or $(RTL_BASE_H); just rtl.def.
      	* gengenrtl.c: Don't include coretypes.h, tm.h, rtl.h, or
      	real.h.  Give fake definition of CONST_DOUBLE_FORMAT and
      	substitute definition of NUM_RTX_CODE.  Add casts to avoid
      	warnings.
      	* machmode.h: Include insn-modes.h, not machmode.def.  Include
      	mode-classes.def to define enum mode_class.  Tweak definitions
      	of GET_MODE_CLASS, GET_MODE_SIZE, GET_MODE_BITSIZE, GET_MODE_MASK,
      	GET_MODE_INNER, GET_MODE_WIDER_MODE, GET_CLASS_NARROWEST_MODE.
      	(inner_mode_array): Renamed mode_inner.
      	(mode_base_align): New.
      	* rtl.c (mode_name, mode_class, mode_bitsize, mode_size,
      	mode_unit_size, mode_wider_mode, mode_mask_array,
      	inner_mode_array, class_narrowest_mode): Delete definitions.
      	* stor-layout.c (get_mode_alignment): Use mode_base_align.
      	* real.h: Use MIN_MODE_FLOAT and MAX_MODE_FLOAT, not QFmode
      	and TFmode, in real_format_for_mode and REAL_MODE_FORMAT.
      
      	* config/ip2k/ip2k.h, config/iq2000/iq2000.h:
      	No need to define BITS_PER_UNIT.
      
      From-SVN: r72313
      Zack Weinberg committed