1. 18 Mar, 2009 1 commit
    • dse.c (struct group_info): Reorder fields for 64-bit hosts. · 8f5929e1
      	* dse.c (struct group_info): Reorder fields for 64-bit hosts.
      	* matrix-reorg.c (struct matrix_info): Likewise.
      	* tree-ssa-loop-ivopts.c (struct ivopts_data): Likewise.
      	* rtl.h (struct mem_attrs): Likewise.
      	* df.h (struct df): Likewise.
      	* tree-data-ref.h (struct data_dependence_relation): Likewise.
      	* ira-int.h (struct ira_allocno): Likewise.
      	* df-scan.c (struct df_collection_rec): Likewise.
      	* ira.c (struct equivalence): Likewise.
      	* function.c (struct temp_slot): Likewise.
      	* cfgloop.h (struct loop): Likewise.
      
      	* parser.c (struct cp_token): Reorder fields for 64-bit hosts.
      	(eof_token): Adjust.
      
      	* include/cpplib.h (struct cpp_dir): Reorder fields for 64-bit hosts.
      
      From-SVN: r144938
      Jakub Jelinek committed
  2. 20 Feb, 2009 1 commit
  3. 29 Jan, 2009 1 commit
    • tm.texi (TARGET_IRA_COVER_CLASSES): Modify description. · 2af2dbdc
      2008-01-29  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
      	* doc/passes.texi: Remove entries about regclass, local-alloc, and
      	global.  Modify entries about regmove and IRA.
      
      	* ra-conflict.c: Remove the file.
      
      	* reload.c (push_reload, find_dummy_reload): Remove flag_ira.
      
      	* tree-pass.h (pass_local_alloc, pass_global_alloc): Remove.
      	(pass_regclass_init): Rename to pass_reginfo_init.
      
      	* cfgloopanal.c (estimate_reg_pressure_cost): Remove flag_ira.
      
      	* toplev.h (flag_ira): Remove.
      
      	* caller-save.c (setup_save_areas): Remove flag_ira.
      
      	* ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
      	Ditto.
      
      	* global.c: Remove the file.
      
      	* opts.c: (decode_options): Remove flag_ira.
      
      	* hard-reg-set.h (losing_caller_save_reg_set): Remove.
      
      	* regmove.c: Modify file description.
      	(find_use_as_address, try_auto_increment): Define them only if
      	AUTO_INC_DEC is defined.
      	(replacement_quality, replace_in_call_usage, fixup_match_1,
      	stable_and_no_regs_but_for_p): Remove.
      	(reg_set_in_bb): Make it static.
      	(regmove_optimize): Remove flag_ira and code which worked for
      	!flag_ira.
      
      	* local-alloc.c: Remove the file.
      
      	* common.opt (fira): Remove.
      
      	* ira.c: Include except.h.
      	(eliminable_regset): Move from global.c.
      	(mark_elimination): Ditto.  Remove flag_ira.
      	(reg_renumber, struct equivalence, reg_equiv, equiv_mem,
      	equiv_mem_modified, validate_equiv_mem_from_store,
      	validate_equiv_mem, equiv_init_varies_p, equiv_init_movable_p,
      	contains_replace_regs, memref_referenced_p, memref_used_between_p,
      	no_equiv, recorded_label_ref): Move from local-alloc.c.
      	(update_equiv_regs): Ditto.  Make it static.
      	(print_insn_chain, print_insn_chains): Move it from global.c.
      	pseudo_for_reload_consideration_p): Ditto.  Remove flag_ira.
      	(build_insn_chain): Ditto.  Make it static.
      	(ra_init_live_subregs): Move from ra-conflict.c.  Make it static.
      	Rename to init_live_subregs.
      	(gate_ira): Remove flag_ira.
      
      	* regclass.c: Rename reginfo.c.  Change file description.
      	(FORBIDDEN_INC_DEC_CLASSES): Remove.
      	(reg_class_superclasses, forbidden_inc_dec_class, in_inc_dec):
      	Remove.
      	(init_reg_sets_1): Remove code for evaluation of
      	reg_class_superclasses and losing_caller_save_reg_set.
      	(init_regs): Remove init_reg_autoinc.
      	(struct costs, costs, init_cost, ok_for_index_p_nonstrict,
      	ok_for_base_p_nonstrict): Remove.
      	(regclass_init): Rename to reginfo_init.  Don't initialize
      	init_cost.
      	(pass_regclass_init): Rename to pass_reginfo_init.  Modify
      	corresponding entries.
      	(dump_regclass, record_operand_costs, scan_one_insn,
      	init_reg_autoinc, regclass, record_reg_classes, copy_cost,
      	record_address_regs, auto_inc_dec_reg_p): Remove.
      	(gt-regclass.h): Rename to gt-reginfo.h.
      
      	* rtl.h (dump_global_regs, retry_global_alloc,
      	build_insn_chain, dump_local_alloc, update_equiv_regs):
      	Remove.
      
      	* Makefile.in (RA_H): Remove.
      	(OBJS-common): Remove global.o, local-alloc.o, and ra-conflict.o.
      	Rename regclass.o to reginfo.o.
      	(regclass.o): Rename to reginfo.o.  Rename gt-regclass.h to
      	gt-reginfo.h.
      	(global.o, local-alloc.o, ra-conflict.o): Remove entries.
      	(GTFILES): Rename regclass.c to	reginfo.c.
      
      	* passes.c (init_optimization_passes): Remove pass_local_alloc and
      	pass_global_alloc.  Rename pass_regclass_init to
      	pass_reginfo_init.
      
      	* reload1.c (compute_use_by_pseudos, reload, count_pseudo,
      	count_spilled_pseudo, find_reg, alter_reg, delete_output_reload):
      	Remove flag_ira.
      	(finish_spills): Ditto.  Remove code for !flga_ira.
      
      From-SVN: r143757
      Vladimir Makarov committed
  4. 06 Jan, 2009 2 commits
    • re PR rtl-optimization/38426 (Incorrect code produced with… · ace984c8
      re PR rtl-optimization/38426 (Incorrect code produced with -momit-leaf-frame-pointer -fno-unit-at-a-time)
      
      gcc/
      	PR rtl-optimization/38426.
      	* ira.c (ira): Set current_function_is_leaf earlier.
      
      From-SVN: r143135
      Richard Sandiford committed
    • re PR rtl-optimization/38583 (huge test case makes register allocator run out of… · 311aab06
      re PR rtl-optimization/38583 (huge test case makes register allocator run out of memory while constructing the conflict graph)
      
      2009-01-05  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/38583
      	* params.h (IRA_MAX_CONFLICT_TABLE_SIZE): New macro.
      
      	* params.def (ira-max-conflict-table-size): New.
      
      	* doc/invoke.texi (ira-max-conflict-table-size): Decribe.
      	
      	* ira.h (ira_conflicts_p): New external definition.
      	
      	* ira-conflicts.c (build_conflict_bit_table): Do not build too big
      	table.  Report this.  Return result of building.
      	(ira_build_conflicts): Use ira_conflicts_p.  Check result of
      	building conflict table.
      
      	* ira-color.c (fast_allocation): Use num instead of
      	ira_allocnos_num.
      	(ira_color): Use ira_conflicts_p.
      	
      	* global.c: Include ira.h.
      	(pseudo_for_reload_consideration_p, build_insn_chain): Use
      	ira_conflicts_p.
      
      	* Makefile.in (global.o): Add ira.h.
      	
      	* ira-build.c (mark_all_loops_for_removal,
      	propagate_some_info_from_allocno): New.
      	(remove_unnecessary_allocnos): Call
      	propagate_some_info_from_allocno.
      	(remove_low_level_allocnos): New.
      	(remove_unnecessary_regions): Add parameter.  Call
      	mark_all_loops_for_removal and remove_low_level_allocnos.  Pass
      	parameter to remove_unnecessary_regions.
      	(ira_build): Remove all regions but root if the conflict table was
      	not built.  Update conflict hard regs for allocnos crossing calls.
      
      	* ira.c (ira_conflicts_p): New global.
      	(ira): Define and use ira_conflicts_p.
      
      	* reload1.c (compute_use_by_pseudos, reload, count_pseudo,
      	count_spilled_pseudo, find_reg, alter_reg, finish_spills,
      	emit_input_reload_insns, delete_output_reload): Use
      	ira_conflicts_p.
      
      From-SVN: r143112
      Vladimir Makarov committed
  5. 09 Dec, 2008 1 commit
    • tm.texi (TARGET_IRA_COVER_CLASSES): Modify description. · 7db7ed3c
      2008-12-09  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* doc/tm.texi (TARGET_IRA_COVER_CLASSES): Modify description.
      
      	* doc/invoke.texi (-fira-region): Describe new option.
      	(-fira-algorithm): Change the values.
      
      	* ira-conflicts.c (build_conflict_bit_table,
      	build_allocno_conflicts): Use ira_reg_classes_intersect_p.
      	(ira_build_conflicts): Use flag flag_ira_region instead of
      	flag_ira_algorithm.  Prohibit usage of callee-saved likely spilled
      	base registers for allocnos crossing calls.
      
      	* flags.h (enum ira_algorithm): Redefine.
      	(enum ira_region): New.
      	(flag_ira_region): New.
      
      	* cfgloopanal.c (estimate_reg_pressure_cost): Use flag_ira_region
      	instead of flag_ira_algorithm.
      
      	* toplev.c (flag_ira_algorithm): Change the initial value.
      	(flag_ira_region): New.
      
      	* ira-int.h (ira_reg_classes_intersect_p,
      	ira_reg_class_super_classes): New.
      
      	* ira-color.c (update_copy_costs): Use
      	ira_reg_classes_intersect_p.  Use right class to find hard reg
      	index.
      	(update_conflict_hard_regno_costs): Ditto.  Add a new parameter.
      	(assign_hard_reg): Ditto.  Pass additional argument to
      	update_conflict_hard_regno_costs.  Do not uncoalesce for priority
      	coloring.
      	(allocno_priorities, setup_allocno_priorities,
      	allocno_priority_compare_func): Move before color_allocnos.
      	(color_allocnos): Add priority coloring.  Use flag flag_ira_region
      	instead of flag_ira_algorithm.
      	(move_spill_restore): Check classes of the same reg allocno from
      	different regions.
      	(update_curr_costs): Use ira_reg_classes_intersect_p.
      	(ira_reassign_conflict_allocnos): Ditto.
      
      	* opts.c (decode_options): Always set up flag_ira.  Set up
      	flag_ira_algorithm.  Warn CB can not be used for architecture.
      	(common_handle_option): Modify code for -fira-algorithm.  Add code
      	to process -fira-region.
      
      	* ira-lives.c (update_allocno_pressure_excess_length): Process
      	superclasses too.
      	(set_allocno_live, clear_allocno_live, mark_reg_live,
      	mark_reg_dead, process_bb_node_lives): Ditto.
      
      	* ira-emit.c (ira_emit): Fix insn codes.
      	
      	* ira-build.c (propagate_allocno_info): Use flag flag_ira_region
      	instead of flag_ira_algorithm.
      	(allocno_range_compare_func): Ignore classes for priority
      	coloring.
      	(setup_min_max_conflict_allocno_ids): Ditto.
      	(ira_flattening): Use ira_reg_classes_intersect_p.
      
      	* genpreds.c (write_enum_constraint_num): Output
      	CONSTRAINT__LIMIT.
      	
      	* common.opt (fira-algorithm): Modify.
      	(fira-region): New.
      
      	* ira.c (setup_class_hard_regs): Initialize.
      	(setup_cover_and_important_classes): Modify code setting class
      	related info for priority coloring.
      	(setup_class_translate): Ditto.
      	(ira_reg_classes_intersect_p, ira_reg_class_super_classes): New.
      	(setup_reg_class_intersect_union): Rename to
      	setup_reg_class_relations.  Add code for setting up new variables.
      	(find_reg_class_closure): Do not check targetm.ira_cover_classes.
      	(ira): Use flag flag_ira_region instead of flag_ira_algorithm.
      
      	* ira-costs.c (common_classes): New.
      	(print_costs): Use flag flag_ira_region instead of
      	flag_ira_algorithm.
      	(find_allocno_class_costs): Ditto.  Use common_classes.  Translate
      	alt_class.
      	(ira_costs): Allocate/deallocate common_classes.
      	
      	* config/m32c/m32.h (REG_ALLOC_ORDER): Add reg 19.
      	(REG_CLASS_CONTENTS, reg_class, REG_CLASS_NAMES): New entries for
      	R02A_REGS.
      
      	* reload1.c (choose_reload_regs): Use MODE_INT for partial ints in
      	smallest_mode_for_size.
      
      From-SVN: r142610
      Vladimir Makarov committed
  6. 25 Nov, 2008 1 commit
    • invoke.texi (ira-max-loops-num): Change semantics. · 30ea859e
      2008-11-25  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* doc/invoke.texi (ira-max-loops-num): Change semantics.
      
      	* ira-int.h (struct ira_loop_tree_node): New member to_remove_p.
      
      	* ira-color.c (allocno_spill_priority): New function.
      	(remove_allocno_from_bucket_and_push, push_allocno_to_spill):
      	Print more info about the spilled allocno.
      	(push_allocnos_to_stack): Use allocno_spill_priority.  Add more
      	checks on bad spill.
      
      	* ira-build.c (loop_node_to_be_removed_p): Remove.
      	(loop_compare_func, mark_loops_for_removal): New functions.
      	(remove_uneccesary_loop_nodes_from_loop_t): Use member
      	to_remove_p.
      	(remove_unnecessary_allocnos): Call mark_loops_for_removal.
      
      	* ira.c (ira): Don't change flag_ira_algorithm.
      
      	* params.def (ira-max-loops-num): Change the value.
      
      From-SVN: r142207
      Vladimir Makarov committed
  7. 19 Nov, 2008 1 commit
    • re PR middle-end/37790 (limits-fnargs.c takes very long time to compile at -O2) · 3553f0bb
      2008-11-15  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR bootstrap/37790
      	* ira-int.h (ira_copy_allocno_live_range_list,
      	ira_merge_allocno_live_ranges,
      	ira_allocno_live_ranges_intersect_p,
      	ira_finish_allocno_live_range_list): New prototypes.
      	(ira_allocno_live_ranges_intersect_p,
      	ira_pseudo_live_ranges_intersect_p): Remove.
      	
      	* ira-conflicts.c (ira_allocno_live_ranges_intersect_p,
      	ira_pseudo_live_ranges_intersect_p): Rename to
      	allocnos_have_intersected_live_ranges_p and
      	pseudos_have_intersected_live_ranges_p.  Move them from here to
      	...
      
      	* ira-color.c: ... here
      	(coalesced_allocno_conflict_p): Use
      	allocnos_have_intersected_live_ranges_p.
      	(coalesced_allocnos_living_at_program_points,
      	coalesced_allocnos_live_at_points_p,
      	set_coalesced_allocnos_live_points): Remove.
      	(slot_coalesced_allocnos_live_ranges,
      	slot_coalesced_allocno_live_ranges_intersect_p,
      	setup_slot_coalesced_allocno_live_ranges): New.
      	(coalesce_spill_slots): Use ranges of coalesced allocnos.
      	(ira_sort_regnos_for_alter_reg): Use
      	allocnos_have_intersected_live_ranges_p.
      	(ira_reuse_stack_slot): Use
      	pseudos_have_intersected_live_ranges_p.
      
      	* global.c (pseudo_for_reload_consideration_p): Check
      	flag_ira_share_spill_slots too.
      
      	* ira-build.c (copy_allocno_live_range_list): Rename to
      	ira_copy_allocno_live_range_list.  Make it external.
      	(merge_ranges): Rename to ira_merge_allocno_live_ranges.  Make it
      	external.
      	(ira_allocno_live_ranges_intersect_p): New.
      	(ira_finish_allocno_live_range_list): New.
      	(finish_allocno): Use it.
      	(remove_unnecessary_allocnos): Use ira_merge_allocno_live_ranges.
      	(copy_info_to_removed_store_destinations): Ditto.  Use
      	ira_copy_allocno_live_range_list.
      	(ira_flattening): Use ira_merge_allocno_live_ranges.
      	
      	* ira.c (too_high_register_pressure_p): New function.
      	(ira): Switch off sharing spill slots if the pressure is too high.
      
      From-SVN: r142017
      Vladimir Makarov committed
  8. 27 Oct, 2008 2 commits
    • ira-int.h (ira_allocno): Add member updated_cover_class_cost. · cb1ca6ac
      2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-int.h (ira_allocno): Add member updated_cover_class_cost.
      	(ALLOCNO_UPDATED_COVER_CLASS_COST): New.
      	(ira_fast_allocation): Remove the prototype.
      	
      	* ira-color.c (update_copy_costs, allocno_cost_compare_func,
      	assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
      	(color_pass): Modify the updated costs.
      	(ira_color): Rename to color.  Make it static.
      	(ira_fast_allocation): Rename to fast_allocation.  Make it static.
      	(ira_color): New function.
      	
      	* ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
      	change.
      
      	* ira-lives.c (last_call_num, allocno_saved_at_call): New
      	variables.
      	(set_allocno_live, clear_allocno_live, mark_ref_live,
      	mark_ref_dead): Invalidate corresponding element of
      	allocno_saved_at_call.
      	(process_bb_node_lives): Increment last_call_num.  Setup
      	allocno_saved_at_call.  Don't increase ALLOCNO_CALL_FREQ if the
      	allocno was already saved.
      	(ira_create_allocno_live_ranges): Initiate last_call_num and
      	allocno_saved_at_call.
      
      	* ira-build.c (ira_create_allocno): Initiate
      	ALLOCNO_UPDATED_COVER_CLASS_COST.
      	(create_cap_allocno, propagate_allocno_info,
      	remove_unnecessary_allocnos): Remove setting updated costs.
      	(ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
      
      	* ira.c (ira):  Don't call ira_fast_allocation.
      
      	* ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
      	updated costs.
      
      From-SVN: r141385
      Vladimir Makarov committed
    • re PR middle-end/37813 (assert with IRA_COVER_CLASSES with singleton) · c0683a82
      2008-10-27  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR middle-end/37813
      	* ira-conflicts.c (process_regs_for_copy): Remove class subset
      	check.
      
      	* ira-int.h (ira_hard_regno_cover_class): New.
      
      	* ira-lives.c (mark_reg_live, mark_reg_dead,
      	process_bb_node_lives): Use ira_hard_regno_cover_class.
      
      	* ira.c (reg_class ira_hard_regno_cover_class): New global
      	variable.
      	(setup_hard_regno_cover_class): New function.
      	(ira_init): Call setup_hard_regno_cover_class.
      
      	* ira-costs.c (cost_class_nums): Add comment.
      	(find_allocno_class_costs): Initiate cost_class_nums.
      	(setup_allocno_cover_class_and_costs): Check cost_class_nums.
      
      From-SVN: r141384
      Vladimir Makarov committed
  9. 11 Oct, 2008 1 commit
    • re PR middle-end/37448 (cannot compile big function) · 57512f53
      2008-10-11  Kenneth Zadeck <zadeck@naturalbridge.com>
      
      	PR rtl-optimization/37448
      	* df.h: (df_ref_class): New enum.
      	(DF_REF_TYPE_NAMES, df_ref_extract): Removed.
      	(struct df_ref): Replaced with union df_ref_d.
      	(df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref):
      	New members of df_ref_d union.
      	(DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG,
      	DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN,
      	DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS,
      	DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG,
      	DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET,
      	DF_REF_EXTRACT_MODE): Replaced definition to access union
      	df_ref_d.
             	(DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros.
      	(df_scan_bb_info, df_bb_regno_first_def_find,
      	df_bb_regno_last_def_find, df_find_def, df_find_use,
      	df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
      	debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy,
      	df_ref_create, df_ref_remove, df_compute_accessed_bytes,
      	df_get_artificial_defs, df_get_artificial_uses, union_defs)
      	Replaced struct df_ref * with df_ref.
      	* df-scan.c (df_collection_rec, df_null_ref_rec,
      	df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref,
      	df_grow_ref_info, df_ref_create, df_reg_chain_unlink,
      	df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain,
      	df_ref_chain_delete, df_free_collection_rec, df_insn_rescan,
      	df_reorganize_refs_by_reg_by_reg,
      	df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg,
      	df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs,
      	df_sort_and_compress_refs, df_install_ref, df_install_refs,
      	df_ref_record, df_get_conditional_uses, df_get_call_refs,
      	df_bb_refs_record, df_exit_block_uses_collect,
      	df_record_exit_block_uses, df_reg_chain_mark,
      	df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct
      	df_ref * with df_ref.
      	(df_ref_record, df_uses_record, df_ref_create_structure): Added
      	df_ref_class parameter.
      	(df_scan_problem_data): Added new pools for different types of
      	refs.
      	(df_scan_free_internal, df_scan_alloc, df_free_ref,
      	df_ref_create_structure): Processed new ref pools.
      	(df_scan_start_dump): Added counts of refs and insns.
      	(df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record,
      	df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect,
      	df_entry_block_defs_collect, df_exit_block_uses_collect): Added
      	code to pass df_ref_class down to ref creation functions.
      	(df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1,
      	df_reg_chain_mark): Use macros to hide references to df_refs.
      	(df_ref_chain_change_bb): Removed.
      	(df_insn_change_bb): Remove calls to df_ref_insn_change_bb.
      	(df_ref_equal_p, df_ref_compare, df_ref_create_structure):
      	Enhanced to understand df_ref union structure.
      	* fwprop.c (local_ref_killed_between_p, use_killed_between,
      	all_uses_available_at, update_df, try_fwprop_subst,
      	forward_propagate_subreg, forward_propagate_and_simplify,
      	forward_propagate_into, fwprop, fwprop_addr): Replaced struct
      	df_ref * with df_ref.
      	(use_killed_between, all_uses_available_at): Use macros to hide
      	references to df_refs.
      	* regstat.c (regstat_bb_compute_ri,
      	regstat_bb_compute_calls_crossed): Replaced struct df_ref * with
      	df_ref.
      	* see.c (see_handle_relevant_defs, see_handle_relevant_uses,
      	see_handle_relevant_refs, see_analyze_one_def,
      	see_update_relevancy, see_propagate_extensions_to_uses): Replaced
      	struct df_ref * with df_ref.
      	* ra-conflict.c (record_one_conflict, clear_reg_in_live,
      	global_conflicts): Replaced struct df_ref * with df_ref.
      	* ddg.c (create_ddg_dep_from_intra_loop_link,
      	add_cross_iteration_register_deps, build_inter_loop_deps):
      	Replaced struct df_ref * with df_ref.
      	(create_ddg_dep_from_intra_loop_link,
      	add_cross_iteration_register_deps): Use macros to hide references
      	to df_refs.
      	* auto-inc-dec.c (find_inc, merge_in_block): Replaced struct
      	df_ref * with df_ref.
      	* df-core.c (df_bb_regno_first_def_find,
      	df_bb_regno_last_def_find, df_find_def, df_find_use,
      	df_refs_chain_dump, df_regs_chain_dump, df_ref_debug,
      	debug_df_ref): Replaced struct df_ref * with df_ref.
      	(df_mws_dump, df_ref_debug): Use macros to hide references to
      	df_refs.
      	* cse.c (cse_extended_basic_block): Replaced struct df_ref * with
      	df_ref.
      	* web.c (union_defs, entry_register, replace_ref, web_main):
      	Replaced struct df_ref * with df_ref.
      	(union_defs, replace_ref): Use macros to hide references to
      	df_refs.
      	* global.c (compute_regs_asm_clobbered, build_insn_chain):
      	Replaced struct df_ref * with df_ref.
      	* ifcvt.c (dead_or_predicable): Replaced struct df_ref * with
      	df_ref.
      	* sel-sched-ir.c (maybe_downgrade_id_to_use, setup_id_reg_sets, ):
      	Replaced struct df_ref * with df_ref.
      	* ira-lives.c (mark_ref_live, def_conflicts_with_inputs_p,
      	mark_ref_dead, process_bb_node_lives): Replaced struct df_ref *
      	with df_ref.
      	* local-alloc.c (block_alloc): Replaced struct df_ref * with
      	df_ref.
      	* df-byte-scan.c (df_compute_accessed_bytes_extract,
      	df_compute_accessed_bytes_strict_low_part,
      	df_compute_accessed_bytes_subreg, df_compute_accessed_bytes):
      	Replaced struct df_ref * with df_ref.
      	(df_compute_accessed_bytes): Use macros to hide references to
      	df_refs.
      	* init-regs.c (initialize_uninitialized_regs): Replaced struct
      	df_ref * with df_ref.
      	* loop-invariant.c (invariant_for_use, hash_invariant_expr_1,
      	check_dependency, check_dependencies, record_uses): Replaced
      	struct df_ref * with df_ref.
      	(invariant_for_use, check_dependency): Use macros to hide
      	references to df_refs.
      	* loop-iv.c (iv_analysis_loop_init, iv_get_reaching_def,
      	get_biv_step_1, get_biv_step, record_iv, iv_analyze_def,
      	iv_analyze, biv_p): Replaced struct df_ref * with df_ref.
      	(iv_analysis_loop_init, iv_get_reaching_def): Use macros to hide
      	references to df_refs.
      	* ira.c (compute_regs_asm_clobbered): Replaced struct df_ref * with df_ref.
      	* combine.c (create_log_links): Replaced struct df_ref * with df_ref.
      	* df-problems.c (df_rd_bb_local_compute_process_def,
      	df_lr_bb_local_compute, df_live_bb_local_compute, df_chain_create,
      	df_chain_unlink_1, df_chain_unlink, df_chain_copy,
      	df_chain_remove_problem, df_chain_create_bb_process_use,
      	df_chain_create_bb, df_chain_top_dump, df_chain_bottom_dump,
      	df_byte_lr_check_regs, df_byte_lr_bb_local_compute,
      	df_byte_lr_simulate_defs, df_byte_lr_simulate_uses,
      	df_byte_lr_simulate_artificial_refs_at_top,
      	df_byte_lr_simulate_artificial_refs_at_end, df_create_unused_note,
      	df_note_bb_compute, df_note_add_problem, df_simulate_defs,
      	df_simulate_uses, df_simulate_artificial_refs_at_end,
      	df_simulate_artificial_refs_at_top): Replaced struct df_ref * with df_ref.
      	(df_chain_dump): Use macros to hide
      	references to df_refs.
      	* config/mips/mips.c (r10k_simplify_address): Replaced struct
      	df_ref * with df_ref.
      	* dce.c (mark_nonreg_stores, delete_corresponding_reg_eq_notes,
      	mark_artificial_uses, mark_reg_dependencies,
      	byte_dce_process_block): Replaced struct df_ref * with df_ref.
      
      From-SVN: r141067
      Kenneth Zadeck committed
  10. 20 Sep, 2008 1 commit
    • tm.texi (TARGET_IRA_COVER_CLASSES): Define. · 76e68dca
      gcc/
      	* doc/tm.texi (TARGET_IRA_COVER_CLASSES): Define.
      	(IRA_COVER_CLASSES): Refer to TARGET_IRA_COVER_CLASSES.
      	* target.h (gcc_target): Add ira_cover_classes.
      	* ira.c: Remove IRA_COVER_CLASSES guards.
      	(setup_cover_and_important_classes): Use targetm.ira_cover_classes
      	instead of IRA_COVER_CLASSES.
      	(setup_cover_and_important_classes): Remove IRA_COVER_CLASSES guard.
      	(setup_class_translate): Likewise.
      	(setup_reg_class_intersect_union): Likewise.
      	(find_reg_class_closure): Replace IRA_COVER_CLASSES guard with a
      	test of targetm.ira_cover_classes.
      	* opts.c (decode_options): Use targetm.ira_cover_classes instead
      	of IRA_COVER_CLASSES.
      	* target-def.h (TARGET_IRA_COVER_CLASSES): Define.
      	(TARGET_INITIALIZER): Include it.
      	* targhooks.h (default_ira_cover_classes): Declare.
      	* targhooks.c (default_ira_cover_classes): New function.
      
      From-SVN: r140512
      Richard Sandiford committed
  11. 06 Sep, 2008 1 commit
    • ira-int.h (ira_zero_hard_reg_set, [...]): Delete. · 4f341ea0
      gcc/
      	* ira-int.h (ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
      	* ira-color.c (setup_allocno_left_conflicts_num): Use
      	hard_reg_set_equal_p instead of a comparison with
      	ira_zero_hard_reg_set.
      	* ira.c (setup_reg_subclasses): Likewise.
      	(setup_cover_and_important_classes): Likewise.
      	(setup_class_translate): Likewise.
      	(setup_reg_class_intersect_union): Likewise.
      	(ira_zero_hard_reg_set, ira_one_hard_reg_set): Delete.
      	(ira_init_once): Don't initialize them.
      
      From-SVN: r140054
      Richard Sandiford committed
  12. 03 Sep, 2008 1 commit
  13. 01 Sep, 2008 1 commit
  14. 26 Aug, 2008 1 commit
    • [multiple changes] · 058e97ec
      2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
      	ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
      
      	* doc/passes.texi: Describe IRA.
      
      	* doc/tm.texi (IRA_COVER_CLASSES,
      	IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
      
      	* doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
      	(-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
      	-fira-propagate-cost, -fno-ira-share-save-slots,
      	-fno-ira-share-spill-slots, -fira-verbose): Describe new options.
      
      	* flags.h (ira_algorithm): New enumeration.
      	(flag_ira_algorithm, flag_ira_verbose): New external variable
      	declarations.
      
      	* postreload.c (gate_handle_postreload): Don't do post reload
      	optimizations unless the reload is completed.
      
      	* reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
      	IRA.
      
      	* tree-pass.h (pass_ira): New external variable declaration.
      
      	* reload.h: Add 2008 to the Copyright.
          
      	* cfgloopanal.c: Include params.h.
      	(estimate_reg_pressure_cost): Decrease cost for IRA optimization
      	mode.
          
      	* params.h (IRA_MAX_LOOPS_NUM): New macro.
      
      	* toplev.c (ira.h): New include.
      	(flag_ira_algorithm, flag_ira_verbose): New external variables.
      	(backend_init_target): Call ira_init.
      	(backend_init): Call ira_init_once.
      	(finalize): Call finish_ira_once.
      
      	* toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
      	flag_ira_share_save_slots, flag_ira_share_spill_slots): New
      	external variables.
      
      	* regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
      	may_move_out_cost): New external variable declarations.
      	(move_table): New typedef.
          
      	* caller-save.c: Include headers output.h and ira.h.
      	(no_caller_save_reg_set): New global variable.
      	(save_slots_num, save_slots): New variables.
      	(reg_save_code, reg_restore_code, add_stored_regs): Add
      	prototypes.
      	(init_caller_save): Set up no_caller_save_reg_set.
      	(init_save_areas): Reset save_slots_num.
      	(saved_hard_reg): New structure.
      	(hard_reg_map, saved_regs_num, all_saved_regs): New variables.
      	(initiate_saved_hard_regs, new_saved_hard_reg,
      	finish_saved_hard_regs, saved_hard_reg_compare_func): New
      	functions.
      	(setup_save_areas): Add code for sharing stack slots.
      	(all_blocks): New variable.
      	(save_call_clobbered_regs): Process pseudo-register too.
      	(mark_set_regs): Process pseudo-register too.
      	(insert_one_insn): Put the insn after bb note in a empty basic
      	block.  Add insn check.
          
      	* global.c (eliminable_regset): Make it external.
      	(mark_elimination): Use DF_LR_IN for IRA.
      	(pseudo_for_reload_consideration_p): New.
      	(build_insn_chain): Make it external.  Don't ignore spilled
      	pseudos for IRA.  Use pseudo_for_reload_consideration_p.
      	(gate_handle_global_alloc): New function.
      	(pass_global_alloc): Add the gate function.
      
      	* opts.c (decode_options): Set up flag_ira.  Print the warning for
      	-fira.
      	(common_handle_option): Process -fira-algorithm and -fira-verbose.
      
      	* timevar.def (TV_IRA, TV_RELOAD): New passes.
      
      	* regmove.c (regmove_optimize): Don't do replacement of output for
      	IRA.
      
      	* hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
      	New external variable declarations.
      
      	* local-alloc.c (update_equiv_regs): Make it external.  Return
      	true if jump label rebuilding should be done.  Rescan new_insn for
      	notes.
      	(gate_handle_local_alloc): New function.
      	(pass_local_alloc): Add the gate function.
      
      	* alias.c (value_addr_p, stack_addr_p): New functions.
      	(nonoverlapping_memrefs_p): Use them for IRA.
      
      	* common.opt (fira, fira-algorithm, fira-coalesce,
      	fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
      	fira-verbose): New options.
      
      	* regclass.c (reg_class_subclasses, contains_reg_of_mode,
      	move_cost, may_move_in_cost, may_move_out_cost): Make the
      	variables external.
      	(move_table): Remove typedef.
      	(init_move_cost): Make it external.
      	(allocate_reg_info, resize_reg_info, setup_reg_classes): New
      	functions.
      
      	* rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
      	setup_reg_classes): New function prototypes.
      	(eliminable_regset): New external variable declaration.
      	(build_insn_chain, update_equiv_regs): New function prototypes.
          
      	* Makefile.in (IRA_INT_H): New definition.
      	(OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
      	ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
      	(reload1.o, toplev.o): Add dependence on ira.h.
      	(cfgloopanal.o): Add PARAMS_H.
      	(caller-save.o): Add dependence on output.h and ira.h.
      	(ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
      	ira-emit.o, ira-lives.o): New entries.
      
      	* passes.c (pass_ira): New pass.
      
      	* params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
      
      	* reload1.c (ira.h): Include the header.
      	(changed_allocation_pseudos): New bitmap.
      	(init_reload): Initiate the bitmap.
      	(compute_use_by_pseudos): Permits spilled registers in FROM.
      	(temp_pseudo_reg_arr): New variable.
      	(reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
      	IRA.  Call alter_reg with the additional parameter.  Don't clear
      	spilled_pseudos for IRA.  Restore original insn chain for IRA.
      	Clear changed_allocation_pseudos at the end of reload.
      	(calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
      	(hard_regno_to_pseudo_regno): New variable.
      	(count_pseudo): Check spilled pseudos.  Set up
      	hard_regno_to_pseudo_regno.
      	(count_spilled_pseudo): Check spilled pseudos. Update
      	hard_regno_to_pseudo_regno.
      	(find_reg): Use better_spill_reload_regno_p.  Check
      	hard_regno_to_pseudo_regno.
      	(alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
      	code for IRA.
      	(eliminate_regs_1): Use additional parameter for alter_reg.
      	(finish_spills): Set up pseudo_previous_regs only for spilled
      	pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
      	more arguments.  Don't clear live_throughout and dead_or_set for
      	spilled pseudos.  Use additional parameter for alter_reg.  Call
      	mark_allocation_change.  Set up changed_allocation_pseudos.
      	Remove sanity check.
      	(emit_input_reload_insns, delete_output_reload): Use additional
      	parameter for alter_reg.  Call mark_allocation_change.
      	(substitute, gen_reload_chain_without_interm_reg_p): New
      	functions.
      	(reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
          
      	* testsuite/gcc.dg/20080410-1.c: New file.
      	
      	* config/s390/s390.h (IRA_COVER_CLASSES,
      	IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
      
      	* config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
      
      	* config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
          
      	* config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
          
      	2008-08-24  Jeff Law  <law@redhat.com>
      	* ira.c (setup_reg_class_intersect_union): Prefer smallest class
      	when ignoring unavailable registers.
      
      	2008-08-24  Jeff Law  <law@redhat.com>
      	* ira-color.c (coalesced_pseudo_reg_slot_compare): Check
      	FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
      	* ira.c (setup_eliminable_regset): Check stack_realign_needed.
      	* config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
      
      	2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
      	* ira-build.c (allocno_range_compare_func): Stabilize sort.
      
      	2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
      	* config/avr/avr.h (IRA_COVER_CLASSES): New macro.
      	* reload1.c (find_reg): Process registers in register allocation order.
      
      	2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
      	* toplev.c (backend_init_target): Move ira_init call from
      	here...
      	(lang_dependent_init_target): ...to here.
      
      	2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
      	* ira.c (setup_class_subset_and_memory_move_costs): Don't
      	calculate memory move costs for NO_REGS.
      
      	2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
      	* ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
      	STACK_REGS is defined.
      
      	2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
      	* config/spu/spu.h (IRA_COVER_CLASSES): New macro.
      
      	2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
      	* config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
      
      	2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
      	* config/sh/sh.h (IRA_COVER_CLASSES): Define.
      	* config/sh/sh.md (movsicc_true+3): Check if emit returns a
      	barrier.
      
      From-SVN: r139590
      Vladimir Makarov committed