1. 19 Jul, 2011 1 commit
    • target.def (class_max_nregs): New hook. · a8c44c52
      	* target.def (class_max_nregs): New hook.
      	* doc/tm.texi.in (TARGET_CLASS_MAX_NREGS): Document.
      	* doc/tm.texi: Regenerate.
      	* targhooks.c (default_class_max_nregs): New function.
      	* targhooks.h (default_class_max_nregs): Declare.
      	* ira.h (target_ira): Change type x_ira_reg_class_max_nregs and
      	x_ira_reg_class_min_nregs arrays to unsigned char.
      	* ira.c (setup_reg_class_nregs): Use TARGET_CLASS_MAX_NREGS target
      	hook instead of CLASS_MAX_NREGS macro.
      	* reginfo.c (restore_register_info): Ditto.
      	* ira-conflicts.c (process_regs_for_copy): Use
      	ira_reg_class_max_nregs array instead of CLASS_MAX_NREGS macro.
      	Change type rclass and aclass vars to reg_class_t.
      	* ira-costs.c (record_reg_classes): Use ira_reg_class_max_nregs
      	array instead of CLASS_MAX_NREGS macro. Change type rclass var to
      	reg_class_t.
      	* reload.c (combine_reloads, find_reloads, find_reloads_address_1):
      	Use ira_reg_class_max_nregs array instead of CLASS_MAX_NREGS macro.
      
      	* config/i386/i386.h (CLASS_MAX_NREGS): Remove.
      	* config/i386/i386.c (ix86_class_max_nregs): New function.
      	(ix86_register_move_cost): Use TARGET_CLASS_MAX_NREGS target hook
      	instead of CLASS_MAX_NREGS macro.
      	(TARGET_CLASS_MAX_NREGS): Define.
      	* config/avr/avr.h (CLASS_MAX_NREGS): Remove.
      	* config/avr/avr-protos.h (class_max_nregs): Remove declaration.
      	* config/avr/avr.c (class_max_nregs): Remove function.
      	* config/alpha/alpha.h (CLASS_MAX_NREGS): Remove.
      	* config/spu/spu.h (CLASS_MAX_NREGS): Remove.
      	* config/mep/mep.h (CLASS_MAX_NREGS): Remove.
      	* config/m32r/m32r.h (CLASS_MAX_NREGS): Remove.
      	* config/microblaze/microblaze.h (CLASS_MAX_NREGS): Remove.
      	* config/xtensa/xtensa.h (CLASS_MAX_NREGS): Remove.
      	* config/stormy16/stormy16.h (CLASS_MAX_NREGS): Remove.
      	* config/lm32/lm32.h (CLASS_MAX_NREGS): Remove.
      	* config/moxie/moxie.h (CLASS_MAX_NREGS): Remove.
      	* config/iq2000/iq2000.h (CLASS_MAX_NREGS): Remove.
      	* config/mn10300/mn10300.h (CLASS_MAX_NREGS): Remove.
      	* config/score/score.h (CLASS_MAX_NREGS): Remove.
      	* config/vax/vax.h (CLASS_MAX_NREGS): Remove.
      	* config/h8300/h8300.h (CLASS_MAX_NREGS): Remove.
      	* config/v850/v850.h (CLASS_MAX_NREGS): Remove.
      
      From-SVN: r176490
      Anatoly Sokolov committed
  2. 23 Jun, 2011 1 commit
    • re PR middle-end/48770 (wrong code with -O -fprofile-arcs -fPIC -fno-dce… · b0c11403
      re PR middle-end/48770 (wrong code with -O -fprofile-arcs -fPIC -fno-dce -fno-forward-propagate -fno-tree-forwprop)
      
      
      	PR middle-end/48770
      	* reload.h (reload): Change to return a bool.
      	* ira.c (ira): If requested by reload, run a fast DCE pass after
      	reload has completed.  Fix comment typo.
      	* reload1.c (need_dce): New file scoped static.
      	(reload): Set reload_completed here.  Return whether or not a DCE
      	pass after reload is needed.
      	(delete_dead_insn): Set need_dce as needed.
      
      	PR middle-end/48770
      	* gcc.dg/pr48770.c: New test.
      
      From-SVN: r175353
      Jeff Law committed
  3. 14 Jun, 2011 1 commit
  4. 26 May, 2011 1 commit
  5. 24 May, 2011 1 commit
    • re PR rtl-optimization/48971 (ICE with -msoft-float -O2) · 113a5be6
      2011-05-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/48971
      	* ira.c (setup_pressure_classes): Don't check register move cost
      	for classes with one registers.  Don't add pressure class if there
      	is a pressure class with the same available hard registers.
      	Check contains_reg_of_mode.  Fix a typo in collecting
      	temp_hard_regset.  Ignore hard registers not belonging to a class.
      
      From-SVN: r174123
      Vladimir Makarov committed
  6. 12 May, 2011 1 commit
  7. 01 May, 2011 1 commit
    • reginfo.c (memory_move_cost): Change rclass argument type form 'enum reg_class' to reg_class_t. · 6f76a878
      	* reginfo.c (memory_move_cost): Change rclass argument type form
      	'enum reg_class' to reg_class_t.
      	* reload.h (memory_move_cost): Update prototype.
      	* postreload.c reload_cse_simplify_set): Change type dclass var to
      	reg_class_t.
      	* ira-int.h (ira_allocate_cost_vector, ira_free_cost_vector):
      	Update prototype.
      	(ira_allocate_and_set_costs): Change aclass argument type form
      	'enum reg_class' to reg_class_t.
      	* ira-build.c (ira_allocate_cost_vector, ira_free_cost_vector): 
      	Change aclass argument type to reg_class_t.
      	(update_conflict_hard_reg_costs): Change type aclass and pref vars
      	to reg_class_t.
      	* gcc/ira.c (setup_class_subset_and_memory_move_costs): Adjust
      	memory_move_cost call.
      
      	* config/ia64/ia64.c (ia64_register_move_cost): Remove 'from' and
      	'to' local var. Rename from_i and to_i arguments to 'from' and 'to'.
      	Change type tmp var to reg_class_t.
      
      From-SVN: r173232
      Anatoly Sokolov committed
  8. 20 Apr, 2011 1 commit
    • remove useless if-before-free tests · 04695783
      Change "if (E) free (E);" to "free (E);" everywhere except in the
      libgo/, intl/, zlib/ and classpath/ directories.
      Also transform equivalent variants like
      "if (E != NULL) free (E);" and allow an extra cast on the
      argument to free.  Otherwise, the tested and freed "E"
      expressions must be identical, modulo white space.
      
      From-SVN: r172785
      Jim Meyering committed
  9. 11 Apr, 2011 1 commit
  10. 09 Apr, 2011 1 commit
  11. 04 Apr, 2011 1 commit
  12. 30 Mar, 2011 1 commit
    • reload.h (reg_equiv_constant): Move into new structure reg_equivs, define accessor macro. · f2034d06
      	* reload.h (reg_equiv_constant): Move into new structure reg_equivs,
      	define accessor macro.
      	(reg_equiv_invariant, reg_equiv_memory_loc): Likewise.
      	(reg_equiv_address, reg_equiv_mem, reg_equiv_alt_mem_list): Likewise.
      	(reg_equiv_init): Likewise.
      	(reg_equivs_size): New variable.
      	(reg_equiv_init_size): Remove.
      	(allocate_initial_values): Move prototype to here from....
      	* integrate.h (allocate_initial_values): Remove prototype.
      	* integrate.c: Include reload.h.
      	(allocate_initial_values): Corresponding changes.
      	* ira.c (find_reg_equiv_invariant_cost): Corresponding changes.
      	(fix_reg_equiv_init, no_equiv): Corresponding changes.
      	(update_equiv_regs): Corresponding changes.
      	(ira): Corresponding changes.
      	* reload.c (push_reg_equiv_alt_mem): Corresponding changes.
      	(push_secondary_reload): Corresponding changes.
      	(push_reload, find_reloads, find_reloads_toplev): Corresponding changes.
      	(make_memloc, find_reloads_address): Corresponding changes.
      	(subst_reg_equivs, subst_indexed_address): Corresponding changes.
      	(find_reloads_address_1): Corresponding changes.
      	(find_reloads_subreg_address, subst_reloads): Corresponding changes.
      	(refers_to_regno_for_reload_p): Corresponding changes.
      	(reg_overlap_mentioned_for_reload_p): Corresponding changes.
      	(refers_to_mem_for_reload_p, find_equiv_reg): Corresponding changes.
      	* reload1.c: Include ggc.h.
      	(grow_reg_equivs): New function.
      	(replace_pseudos_in, reload): Corresponding changes.
      	(calculate_needs_all_insns, alter_regs): Corresponding changes.
      	(eliminate_regs_1, elimination_effects): Corresponding changes.
      	(emit_input_reload_insns, emit_output_reload_insns): Likewise.
      	(delete_output_reload): Likewise.
      	* caller-save.c (mark_referenced_regs): Corresponding changes.
      	* alpha/alpha.c (resolve_reload_operand): Corresponding changes.
      	* frv/predicates.md (frv_load_operand): Corresponding changes.
      	* microblaze/microblaze.c (double_memory_operand): Corresponding
      	changes.
      	* avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Corresponding changes.
      	* xtensa/xtensa.c (fixup_subreg_mem): Corresponding changes.
      	* mn10300/mn10300.c (mn10300_secondary_reload): Corresponding
      	changes.
      	* m68k/m68k.c (emit_move_sequence): Corresponding changes.
      	* arm/arm.c (arm_reload_in_hi, arm_reload_out_hi): Corresponding
      	changes.
      	* pa/pa.c (emit_move_sequence): Corresponding changes.
      	* vax/vax.c (nonindexed_address_p): Corresponding changes.
      
      From-SVN: r171731
      Jeff Law committed
  13. 29 Mar, 2011 1 commit
    • [multiple changes] · 1756cb66
      2011-03-28  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-color.c (update_left_conflict_sizes_p): Don't assume that
      	conflict object hard regset nodes have intersecting hard reg sets.
      	
      	* regmove.c (regmove_optimize): Move ira_set_pseudo_classes call
      	after regstat_init_n_sets_and_refs.
      
      	* ira.c: Add more comments at the top.
      	(setup_stack_reg_pressure_class, setup_pressure_classes):
      	Add comments how we compute the register pressure classes.
      	(setup_allocno_and_important_classes): Add more comments.
      	(setup_class_translate_array, reorder_important_classes)
      	(setup_reg_class_relations): Add comments.
      
      	* ira-emit.c: Add 2011 to the Copyright line.  Add comments at the
      	start of the file.
      
      	* ira-color.c: Add 2011 to the Copyright line.
      	(assign_hard_reg):  Add more comments.
      	(improve_allocation): Ditto.
      
      	* ira-costs.c: Add 2011 to the Copyright line.
      	(setup_cost_classes, setup_regno_cost_classes_by_aclass): Add more
      	comments.
      	(setup_regno_cost_classes_by_mode): Ditto.
      
      	Initial patches from ira-improv branch:
      
      	2010-08-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-build.c: (ira_create_object): Remove initialization of
      	OBJECT_PROFITABLE_HARD_REGS.  Initialize OBJECT_ADD_DATA.
      	(ira_create_allocno): Remove initialization of
      	ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
      	ALLOCNO_SOMEWHERE_RENAMED_P, ALLOCNO_CHILD_RENAMED_P,
      	ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
      	ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO,
      	ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO.
      	Initialize ALLOCNO_ADD_DATA.
      	(copy_info_to_removed_store_destinations): Use ALLOCNO_EMIT_DATA
      	and allocno_emit_reg instead of ALLOCNO_MEM_OPTIMIZED_DEST_P and
      	ALLOCNO_REG.
      	(ira_flattening): Ditto.  Use ALLOCNO_EMIT_DATA instead of
      	ALLOCNO_MEM_OPTIMIZED_DEST and ALLOCNO_SOMEWHERE_RENAMED_P.
      
      	* ira.c (ira_reallocate): Remove.
      	(setup_pressure_classes): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      	(setup_allocno_assignment_flags): Use ALLOCNO_EMIT_DATA.
      	(ira): Call ira_initiate_emit_data and ira_finish_emit_data.
      
      	* ira-color.c: Use ALLOCNO_COLOR_DATA instead of
      	ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
      	ALLOCNO_AVAILABLE_REGS_NUM, ALLOCNO_NEXT_BUCKET_ALLOCNO,
      	ALLOCNO_PREV_BUCKET_ALLOCNO. ALLOCNO_TEMP. Use OBJECT_COLOR_DATA
      	instead of OBJECT_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE,
      	OBJECT_HARD_REGS_SUBNODES_START, OBJECT_HARD_REGS_SUBNODES_NUM.
      	Fix formatting.
      	(object_hard_regs_t, object_hard_regs_node_t): Move from
      	ira-int.h.
      	(struct object_hard_regs, struct object_hard_regs_node): Ditto.
      	(struct allocno_color_data): New.
      	(allocno_color_data_t): New typedef.
      	(allocno_color_data): New definition.
      	(ALLOCNO_COLOR_DATA): New macro.
      	(struct object_color_data): New.
      	(object_color_data_t): New typedef.
      	(object_color_data): New definition.
      	(OBJECT_COLOR_DATA): New macro.
      	(update_copy_costs, calculate_allocno_spill_cost): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      	(move_spill_restore, update_curr_costs): Ditto.
      	(allocno_spill_priority): Make it inline.
      	(color_pass): Allocate and free allocno_color_dat and
      	object_color_data.
      	(struct coalesce_data, coalesce_data_t): New.
      	(allocno_coalesce_data): New definition.
      	(ALLOCNO_COALESCE_DATA): New macro.
      	(merge_allocnos, coalesced_allocno_conflict_p): Use
      	ALLOCNO_COALESCED_DATA instead of ALLOCNO_FIRST_COALESCED_ALLOCNO,
      	ALLOCNO_NEXT_COALESCED_ALLOCNO, ALLOCNO_TEMP.
      	(coalesce_allocnos): Ditto.
      	(setup_coalesced_allocno_costs_and_nums): Ditto.
      	(collect_spilled_coalesced_allocnos): Ditto.
      	(slot_coalesced_allocno_live_ranges_intersect_p): Ditto.
      	(setup_slot_coalesced_allocno_live_ranges): Ditto.
      	(coalesce_spill_slots): Ditto.
      	(ira_sort_regnos_for_alter_reg): Ditto.  Allocate, initialize and
      	free allocno_coalesce_data.
      
      	* ira-conflicts.c: Fix formatting.
      	(process_regs_for_copy): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      	(build_object_conflicts): Optimize.
      
      	* ira-costs.c (record_reg_classes): Optimize.  Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost, ira_may_move_in_cost, and
      	ira_may_move_out_cost instead of ira_get_register_move_cost and
      	ira_get_may_move_cost.
      	(record_address_regs): Ditto.
      	(scan_one_insn): Optimize.
      	(find_costs_and_classes): Optimize.
      	(process_bb_node_for_hard_reg_moves): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      
      	* ira-emit.c: Use allocno_emit_reg, ALLOCNO_EMIT_DATA instead of
      	ALLOCNO_REG, ALLOCNO_CHILD_RENAMED_P, ALLOCNO_MEM_OPTIMIZED_DEST,
      	ALLOCNO_MEM_OPTIMIZED_DEST_P, and ALLOCNO_SOMEWHERE_RENAMED_P.
      	(ira_allocno_emit_data, void_p, new_allocno_emit_data_vec): New
      	definitions.
      	(ira_initiate_emit_data, ira_finish_emit_data)
      	(create_new_allocno): New functions.
      	(modify_move_list): Call create_new_alloc instead of
      	ira_create_allocno.
      	(emit_move_list): Call ira_init_register_move_cost_if_necessary.
      	Use ira_register_move_cost instead of ira_get_register_move_cost.
      
      	* ira-int.h: Fix some comments.
      	(object_hard_regs_t, object_hard_regs_node_t): Move
      	to ira-color.c.
      	(struct object_hard_regs, struct object_hard_regs_node):
      	Ditto.
      	(struct ira_object): Remove profitable_hard_regs, hard_regs_node,
      	hard_regs_subnodes_start, hard_regs_subnodes_num.  Add new member
      	add_data.
      	(struct ira_allocno): Make mode and aclass a bitfield.  Move other
      	bitfield after mode.  Make hard_regno a short int.  Make
      	hard_regno short.  Remove first_coalesced_allocno and
      	next_coalesced_allocno.  Move mem_optimized_dest_p,
      	somewhere_renamed_p, child_renamed_p, reg, and mem_optimized_dest
      	into struct ira_emit_data.  Remove in_graph_p, may_be_spilled_p,
      	available_regs_num, next_bucket_allocno, prev_bucket_allocno,
      	temp, colorable_p.  Add new member add_data.
      	(ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P): Remove.
      	(ALLOCNO_COLORABLE_P, ALLOCNO_AVAILABLE_REGS_NUM): Remove.
      	(ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO): Remove.
      	(ALLOCNO_TEMP, ALLOCNO_FIRST_COALESCED_ALLOCNO): Remove.
      	(ALLOCNO_NEXT_COALESCED_ALLOCNO): Remove.
      	(ALLOCNO_ADD_DATA): New macro.
      	(ira_emit_data_t): New typedef.
      	(struct ira_emit_data): New.  Move mem_optimized_dest_p,
      	somewhere_renamed_p, child_renamed_p, reg, mem_optimized_dest
      	from struct ira_allocno.
      	(ALLOCNO_EMIT_DATA): New macro.
      	(ira_allocno_emit_data, allocno_emit_reg): New.
      	(ALLOCNO_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE): Remove.
      	(OBJECT_HARD_REGS_SUBNODES_STAR, OBJECT_HARD_REGS_SUBNODES_NUM):
      	Remove.
      	(OBJECT_ADD_DATA): New macro.
      	(ira_reallocate): Remove.
      	(ira_initiate_emit_data, ira_finish_emit_data): New.
      	(ira_get_register_move_cost, ira_get_may_move_cost): Remove.
      	(ira_init_register_move_cost_if_necessary): New.
      	(ira_object_conflict_iter_next): Merge into
      	ira_object_conflict_iter_cond.
      	(FOR_EACH_OBJECT_CONFLICT): Don't use
      	ira_object_conflict_iter_next.
      
      	* ira-live.c: (process_single_reg_class_operands): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      
      	2010-08-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-int.h (struct target_ira_int): Remove x_cost_classes.
      
      	* ira-costs.c: Fix formatting.
      	(cost_classes, cost_classes_num): Remove.
      	(struct cost_classes, cost_classes_t, const_cost_classes_t): New.
      	(regno_cost_classes, cost_classes_hash, cost_classes_eq): New.
      	(cost_classes_del, cost_classes_htab): New.
      	(cost_classes_aclass_cache, cost_classes_mode_cache): New.
      	(initiate_regno_cost_classes, setup_cost_classes): New.
      	(setup_regno_cost_classes_by_aclass): New.
      	(setup_regno_cost_classes_by_mode, finish_regno_cost_classes):
      	New.
      	(record_reg_classes): Use regno_cost_classes instead of
      	cost_classes.  Move checking opposite operand up.
      	(record_address_regs): Use regno_cost_classes
      	instead of cost_classes.
      	(scan_one_insn): Ditto.  Use always general register.
      	(print_allocno_costs): Use regno_cost_classes instead of
      	cost_classes.
      	(print_pseudo_costs): Ditto.  Use Reg_N_REFS.
      	(find_costs_and_classes): Set up cost classes for each registers.
      	Use also their mode for this.  Use regno_cost_classes instead of
      	cost_classes.
      	(setup_allocno_class_and_costs): Use regno_cost_classes instead of
      	cost_classes.
      	(free_ira_costs, ira_init_costs): Don't use cost_classes.
      	(ira_costs, ira_set_pseudo_classes): Call
      	initiate_regno_cost_classes and finish_regno_cost_classes.
      
      	2010-10-04  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* target-def.h (TARGET_IRA_COVER_CLASSES): Remove.
      
      	* target.def (ira_cover_classes): Remove.
      
      	* doc/tm.texi: Remove TARGET_IRA_COVER_CLASSES and
      	IRA_COVER_CLASSES.
      
      	* doc/tm.texi.in: Ditto.
      
      	* ira-conflicts.c: Remove mentioning cover classes from the file.
      	Use ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS.  Use
      	ALLOCNO_COVER_CLASS_COST instead of ALLOCNO_CLASS_COST.  Fix
      	formatting.
      
      	* targhooks.c (default_ira_cover_classes): Remove.
      
      	* targhooks.h (default_ira_cover_classes): Ditto.
      
      	* haifa-sched.c: Remove mentioning cover classes from the file.
      	Use ira_reg_pressure_cover instead of ira_reg_class_cover.  Use
      	ira_pressure_classes and ira_pressure_classes_num instead of
      	ira_reg_class_cover_size and ira_reg_class_cover.  Use
      	sched_regno_pressure_class instead of sched_regno_cover_class.
      	(mark_regno_birth_or_death, setup_insn_reg_pressure_info): Use
      	ira_reg_class_max_nregs instead of ira_reg_class_nregs.
      
      	* ira-int.h: Add 2010 to Copyright.  Remove mentioning cover
      	classes from the file.
      	(object_hard_regs_t, object_hard_regs_node_t): New typedefs.
      	(struct object_hard_regs, struct object_hard_regs_node): New.
      	(struct ira_object): New members profitable_hard_regs,
      	hard_regs_node, hard_regs_subnodes_start, hard_regs_subnodes_num.
      	(struct ira_allocno): Rename cover_class to aclass.  Rename
      	cover_class_cost and updated_cover_class_cost to class_cost and
      	updated_class_cost.  Remove splay_removed_p and
      	left_conflict_size.  Add new members colorable_p.
      	(ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICTS_SIZE): Remove.
      	(ALLOCNO_COLORABLE_P): New macro.
      	(ALLOCNO_COVER_CLASS): Rename to ALLOCNO_CLASS.
      	(ALLOCNO_COVER_CLASS_COST, ALLOCNO_UPDATED_COVER_CLASS_COST):
      	Rename to ALLOCNO_CLASS_COST and ALLOCNO_UPDATED__CLASS_COST.
      	(OBJECT_...): Rename parameter C to O.
      	(OBJECT_PROFITABLE_HARD_REGS): New macro.
      	(OBJECT_HARD_REGS_NODE, OBJECT_HARD_REGS_SUBNODES_START)
      	(OBJECT_HARD_REGS_SUBNODES_NUM): New macros.
      	(struct target_ira_int): New members x_ira_max_memory_move_cost,
      	x_ira_max_register_move_cost, x_ira_max_may_move_in_cost,
      	x_ira_max_may_move_out_cost, x_ira_reg_allocno_class_p,
      	x_ira_reg_pressure_class_p, x_ira_important_class_nums,
      	x_ira_reg_class_superunion.  Rename x_prohibited_class_mode_reg to
      	x_ira_prohibited_class_mode_reg.  Rename x_ira_reg_class_union to
      	x_ira_reg_class_subunion.
      	(ira_max_memory_move_cost, ira_max_register_move_cost)
      	(ira_max_may_move_in_cost, ira_max_may_move_out_cost)
      	(ira_reg_allocno_class_p, ira_reg_pressure_class_p)
      	(ira_important_class_nums, ira_reg_class_superunion): New macros.
      	(prohibited_class_mode_regs): Rename to
      	ira_prohibited_class_mode_regs.
      	(ira_reg_class_union): Rename to ira_reg_class_subunion.
      	(ira_debug_class_cover): Rename to ira_debug_allocno_classes.
      	(ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
      	(ira_tune_allocno_costs_and_cover_classes): Rename to
      	ira_tune_allocno_costs.
      	(ira_debug_hard_regs_forest): New.
      	(ira_object_conflict_iter_init, ira_object_conflict_iter_cond)
      	(ira_object_conflict_iter_next): Fix comments.
      	(ira_hard_reg_set_intersection_p, hard_reg_set_size): New
      	functions.
      	(ira_allocate_and_set_costs, ira_allocate_and_copy_costs): Rename
      	cover_class to aclass.
      	(ira_allocate_and_accumulate_costs): Ditto.
      	(ira_allocate_and_set_or_copy_costs): Ditto.
      
      	* opts.c (decode_options): Remove ira_cover_class check.
      
      	* ira-color.c: Remove mentioning cover classes from the file.  Use
      	ALLOCNO_CLASS, ALLOCNO_CLASS_COST, and ALLOCNO_UPDATED_CLASS_COST
      	instead of ALLOCNO_COVER_CLASS, ALLOCNO_COVER_CLASS_COST, and
      	ALLOCNO_UPDATED_COVER_CLASS_COST.  Fix formatting.
      	(splay-tree.h): Remove include.
      	(allocno_coalesced_p, processed_coalesced_allocno_bitmap): Move
      	before copy_freq_compare_func.
      	(allocnos_for_spilling, removed_splay_allocno_vec): Remove.
      	(object_hard_regs_vec, object_hard_regs_htab, node_check_tick):
      	New definitions.
      	(hard_regs_roots, hard_regs_node_vec): Ditto.
      	(object_hard_regs_hash, object_hard_regs_eq, find_hard_regs): Ditto.
      	(insert_hard_regs, init_object_hard_regs, add_object_hard_regs): Ditto.
      	(finish_object_hard_regs, object_hard_regs_compare): Ditto.
      	(create_new_object_hard_regs_node): Ditto.
      	(add_new_object_hard_regs_node_to_forest): Ditto.
      	(add_object_hard_regs_to_forest, collect_object_hard_regs_cover):
      	Ditto.
      	(setup_object_hard_regs_nodes_parent, first_common_ancestor_node):
      	Ditto.
      	(print_hard_reg_set, print_hard_regs_subforest): Ditto.
      	(print_hard_regs_forest, ira_debug_hard_regs_forest): Ditto.
      	(remove_unused_object_hard_regs_nodes): Ditto.
      	(enumerate_object_hard_regs_nodes): Ditto.
      	(object_hard_regs_nodes_num, object_hard_regs_nodes): Ditto.
      	(object_hard_regs_subnode_t): Ditto.
      	(struct object_hard_regs_subnode): Ditto.
      	(object_hard_regs_subnodes, object_hard_regs_subnode_index): Ditto.
      	(setup_object_hard_regs_subnode_index): Ditto.
      	(get_object_hard_regs_subnodes_num): Ditto.
      	(form_object_hard_regs_nodes_forest): Ditto.
      	(finish_object_hard_regs_nodes_tree): Ditto.
      	(finish_object_hard_regs_nodes_forest): Ditto.
      	(allocnos_have_intersected_live_ranges_p): Rename to
      	allocnos_conflict_by_live_ranges_p.  Move before
      	copy_freq_compare_func.
      	(pseudos_have_intersected_live_ranges_p): Rename to
      	conflict_by_live_ranges_p.  Move before copy_freq_compare_func.
      	(setup_left_conflict_sizes_p, update_left_conflict_sizes_p): Ditto.
      	(empty_profitable_hard_regs, setup_profitable_hard_regs): Ditto.
      	(update_copy_costs): Remove assert.  Skip cost update if the hard
      	reg does not belong the class.
      	(assign_hard_reg): Process only profitable hard regs.
      	(uncolorable_allocnos_num): Make it scalar.
      	(allocno_spill_priority): Use ALLOCNO_EXCESS_PRESSURE_POINTS_NUM
      	and ira_reg_class_max_nregs instead of ALLOCNO_LEFT_CONFLICTS_SIZE
      	and ira_reg_class_max_nregs.
      	(bucket_allocno_compare_func): Check frequency first.
      	(sort_bucket): Add compare function as a parameter.
      	(add_allocno_to_ordered_bucket): Assume no coalesced allocnos.
      	(uncolorable_allocnos_splay_tree, USE_SPLAY_P): Remove.
      	(push_allocno_to_stack): Rewrite for checking new allocno
      	colorability.
      	(remove_allocno_from_bucket_and_push): Print cost too.  Remove
      	assert.
      	(push_only_colorable): Pass new parameter to sort_bucket.
      	(push_allocno_to_spill): Remove.
      	(allocno_spill_priority_compare): Make it inline and rewrite.
      	(splay_tree_allocate, splay_tree_free): Remove.
      	(allocno_spill_sort_compare): New function.
      	(push_allocnos_to_stack): Sort allocnos for spilling once.  Don't
      	build and use splay tree.  Choose first allocno in uncolorable
      	allocno bucket to spill.  Remove setting spill cost.
      	(all_conflicting_hard_regs): Remove.
      	(setup_allocno_available_regs_num): Check only profitable hard
      	regs.  Print info about hard regs nodes.
      	(setup_allocno_left_conflicts_size): Remove.
      	(put_allocno_into_bucket): Don't call
      	setup_allocno_left_conflicts_size.  Use
      	setup_left_conflict_sizes_p.
      	(improve_allocation): New.
      	(color_allocnos): Call setup_profitable_hard_regs,
      	form_object_hard_regs_nodes_forest, improve_allocation,
      	finish_object_hard_regs_nodes_forest.  Setup spill cost.
      	(print_loop_title): Use pressure classes.
      	(color_allocnso): Ditto.
      	(do_coloring): Remove allocation and freeing splay_tree_node_pool
      	and allocnos_for_spilling.
      	(ira_sort_regnos_for_alter_reg): Don't setup members
      	{first,next}_coalesced_allocno.
      	(color): Remove allocating and freeing removed_splay_allocno_vec.
      	(fast_allocation): Use ira_prohibited_class_mode_regs instead of
      	prohibited_class_mode_regs.
      
      	* ira-lives.c: Remove mentioning cover classes from the file.  Fix
      	formatting.
      	(update_allocno_pressure_excess_length): Use pressure classes.
      	(inc_register_pressure, dec_register_pressure): Check for pressure
      	class.
      	(mark_pseudo_regno_live, mark_pseudo_regno_subword_live): Use
      	pressure class.  Use ira_reg_class_nregs instead of
      	ira_reg_class_max_nregs.
      	(mark_pseudo_regno_dead, mark_pseudo_regno_subword_dead): Ditto.
      	(mark_hard_reg_live, mark_hard_reg_dead): Use pressure class.
      	(single_reg_class): Use ira_reg_class_nregs instead of
      	ira_reg_class_max_nregs.
      	(process_bb_node_lives): Use pressure classes.
      
      	* ira-emit.c: Remove mentioning cover classes from the file.  Use
      	ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS.  Fix formatting.
      	(change_loop): Use pressure classes.
      	(modify_move_list): Call ira_set_allocno_class instead of
      	ira_set_allocno_cover_class.
      
      	* ira-build.c: Remove mentioning cover classes from the file.  Use
      	ALLOCNO_CLASS and ALLOCNO_CLASS_COST instead of
      	ALLOCNO_COVER_CLASS and ALLOCNO_COVER_CLASS_COST.  Use
      	ALLOCNO_UPDATED_CLASS_COST instead of
      	ALLOCNO_UPDATED_COVER_CLASS_COST.  Fix formatting.
      	(ira_create_object): Initiate OBJECT_PROFITABLE_HARD_REGS.
      	(ira_create_allocno): Remove initialization of
      	ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICT_SIZE.  Initialize
      	ALLOCNO_COLORABLE_P.
      	(ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
      	Update conflict regs for the objects.
      	(create_cap_allocno): Remove assert.  Don't propagate
      	ALLOCNO_AVAILABLE_REGS_NUM.
      	(ira_free_allocno_costs): New function.
      	(finish_allocno): Change a part of code into call of
      	ira_free_allocno_costs.
      	(low_pressure_loop_node_p): Use pressure classes.
      	(object_range_compare_func): Don't compare classes.
      	(setup_min_max_conflict_allocno_ids): Ditto.
      
      	* loop-invariant.c: Remove mentioning cover classes from the file.
      	Use ira_pressure_classes and ira_pressure_classes_num instead of
      	ira_reg_class_cover_size and ira_reg_class_cover.  Fix formatting.
      	(get_cover_class_and_nregs): Rename to
      	get_cover_pressure_and_nregs.  Use ira_reg_class_max_nregs instead
      	of ira_reg_class_nregs.  Use reg_allocno_class instead of
      	reg_cover_class.
      	(get_inv_cost): Use instead ira_stack_reg_pressure_class of
      	STACK_REG_COVER_CLASS.
      	(get_regno_cover_class): Rename to get_regno_pressure_class.
      	(move_loop_invariants): Initialize and finalize regstat.
      
      	* ira.c: Remove mentioning cover classes from the file.  Add
      	comments about coloring without cover classes.  Use ALLOCNO_CLASS
      	instead of ALLOCNO_COVER_CLASS.  Fix formatting.
      	(alloc_reg_class_subclasses, setup_reg_subclasses): Move it before
      	setup_class_subset_and_memory_move_costs.
      	(setup_stack_reg_pressure_class, setup_pressure_classes): New.
      	(setup_cover_and_important_classes): Rename to
      	setup_allocno_and_important_classes.
      	(setup_class_translate_array): New.
      	(setup_class_translate): Call it for allocno and pressure classes.
      	(cover_class_order): Rename to allocno_class_order.
      	(comp_reg_classes_func): Use ira_allocno_class_translate instead
      	of ira_class_translate.
      	(reorder_important_classes): Set up ira_important_class_nums.
      	(setup_reg_class_relations): Set up ira_reg_class_superunion.
      	(print_class_cover): Rename to print_classes.  Add parameter.
      	(ira_debug_class_cover): Rename to ira_debug_allocno_classes.
      	Print pressure classes too.
      	(find_reg_class_closure): Rename to find_reg_classes.  Don't call
      	setup_reg_subclasses.
      	(ira_hard_regno_cover_class): Rename to
      	ira_hard_regno_allocno_class.
      	(ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
      	(setup_prohibited_class_mode_regs): Use
      	ira_prohibited_class_mode_regs instead of
      	prohibited_class_mode_regs.
      	(clarify_prohibited_class_mode_regs): New function.
      	(ira_init_register_move_cost): Set up ira_max_register_move_cost,
      	ira_max_may_move_in_cost, and ira_max_may_move_out_cost.
      	(ira_init_once): Initialize them.
      	(free_register_move_costs): Process them.
      	(ira_init): Move calls of find_reg_classes and
      	setup_hard_regno_aclass after setup_prohibited_class_mode_regs.
      	Call clarify_prohibited_class_mode_regs.
      	(ira_no_alloc_reg): Remove.
      	(too_high_register_pressure_p): Use pressure classes.
      
      	* sched-deps.c: Remove mentioning cover classes from the file.
      	Use ira_reg_pressure_cover instead of ira_reg_class_cover.  Use
      	ira_pressure_classes and ira_pressure_classes_num instead of
      	ira_reg_class_cover_size and ira_reg_class_cover.
      	(mark_insn_hard_regno_birth, mark_hard_regno_death): Use
      	sched_regno_pressure_class instead of sched_regno_cover_class.
      	(mark_insn_pseudo_birth, mark_pseudo_death): Ditto.  Use
      	ira_reg_class_max_nregs instead of ira_reg_class_nregs.
      
      	* ira.h: Add 2010 to Copyright.
      	(ira_no_alloc_reg): Remove external.
      	(struct target_ira): Rename x_ira_hard_regno_cover_class,
      	x_ira_reg_class_cover_size, x_ira_reg_class_cover, and
      	x_ira_class_translate to x_ira_hard_regno_allocno_class,
      	x_ira_allocno_classes_num, x_ira_allocno_classes, and
      	x_ira_allocno_class_translate.  Add x_ira_pressure_classes_num,
      	x_ira_pressure_classes, x_ira_pressure_class_translate, and
      	x_ira_stack_reg_pressure_class.  Rename x_ira_reg_class_nregs to
      	x_ira_reg_class_max_nregs.  Add x_ira_reg_class_min_nregs and
      	x_ira_no_alloc_regs.
      	(ira_hard_regno_cover_class): Rename to
      	ira_hard_regno_allocno_class.
      	(ira_reg_class_cover_size, ira_reg_class_cover): Rename to
      	ira_allocno_classes_num and ira_allocno_classes.
      	(ira_class_translate): Rename to ira_allocno_class_translate.
      	(ira_pressure_classes_num, ira_pressure_classes): New definitions.
      	(ira_pressure_class_translate, ira_stack_reg_pressure_class): Ditto.
      	(ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
      	(ira_reg_class_min_nregs, ira_stack_reg_pressure_class): New
      	(ira_no_alloc_regs): New.
      
      	* ira-costs.c: Add 2010 to Copyright.  Remove mentioning cover
      	classes from the file.  Use ALLOCNO_CLASS instead of
      	ALLOCNO_COVER_CLASS.  Use ALLOCNO_CLASS_COST instead of
      	ALLOCNO_COVER_CLASS_COST.
      	(regno_cover_class): Rename to regno_aclass.
      	(record_reg_classes): Use ira_reg_class_subunion instead of
      	ira_reg_class_union.
      	(record_address_regs): Check overflow.
      	(scan_one_insn): Ditto.
      	(print_allocno_costs): Print total mem cost fore regional
      	allocation.
      	(print_pseudo_costs): Use REG_N_REFS.
      	(find_costs_and_classes): Use classes intersected with them on the
      	1st pass. Check overflow.  Use ira_reg_class_subunion instead of
      	ira_reg_class_union.  Use ira_allocno_class_translate and
      	regno_aclass instead of ira_class_translate and regno_cover_class.
      	Modify code for finding regno_aclass.  Setup preferred classes for
      	the next pass.
      	(setup_allocno_cover_class_and_costs): Rename to
      	setup_allocno_class_and_costs.  Use regno_aclass instead of
      	regno_cover_class.  Use ira_set_allocno_class instead of
      	ira_set_allocno_cover_class.
      	(init_costs, finish_costs): Use regno_aclass instead of
      	regno_cover_class.
      	(ira_costs): Use setup_allocno_class_and_costs instead of
      	setup_allocno_cover_class_and_costs.
      	(ira_tune_allocno_costs_and_cover_classes): Rename to
      	ira_tune_allocno_costs.  Check overflow.  Skip conflict hard regs
      	by processing objects.  Use ira_reg_class_max_nregs instead of
      	ira_reg_class_nregs.
      
      	* rtl.h (reg_cover_class): Rename to reg_allocno_class.
      
      	* sched-int.h: Remove mentioning cover classes from the file.
      	(sched_regno_cover_class): Rename to sched_regno_pressure_class.
      
      	* reginfo.c: Add 2010 to Copyright.  Remove mentioning cover
      	classes from the file.
      	(struct reg_pref): Rename coverclass into allocnoclass.
      	(reg_cover_class): Rename to reg_allocno_class.
      
      	* Makefile.in (ira-color.o): Remove SPLAY_TREE_H from
      	dependencies.
      
      	* config/alpha/alpha.h (IRA_COVER_CLASSES): Remove.
      
      	* config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/avr/avr.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/bfin/bfin.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/cris/cris.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/fr30/fr30.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/frv/frv.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/h8300/h8300.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/i386/i386.h (STACK_REG_COVER_CLASS): Ditto.
      
      	* config/i386/i386.c (TARGET_IRA_COVER_CLASSES)
      	(i386_ira_cover_classes): Ditto.
      
      	* config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/iq2000/iq2000.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/m32r/m32r.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/m68k/m68k.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/mcore/mcore.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/mep/mep.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/mips/mips.c (TARGET_IRA_COVER_CLASSES)
      	(mips_ira_cover_classes): Ditto.
      
      	* config/mn10300/mn10300.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/moxie/moxie.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/pa/pa64-regs.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/pa/pa32-regs.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/picochip/picochip.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/rs6000/rs6000.h (IRA_COVER_CLASSES_PRE_VSX)
      	(IRA_COVER_CLASSES_VSX): Ditto.
      
      	* config/rs6000/rs6000.c (TARGET_IRA_COVER_CLASSES)
      	(rs6000_ira_cover_classes): Ditto.
      
      	* config/rx/rx.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/s390/s390.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/score/score.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/sh/sh.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/sparc/sparc.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/spu/spu.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/stormy16/stormy16.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/v850/v850.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/vax/vax.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/xtensa/xtensa.h (IRA_COVER_CLASSES): Ditto.
      
      From-SVN: r171649
      Vladimir Makarov committed
  14. 28 Mar, 2011 1 commit
  15. 27 Mar, 2011 1 commit
    • [multiple changes] · fe82cdfb
      2011-03-27  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* regmove.c (regmove_optimize): Move ira_set_pseudo_classes call
      	after regstat_init_n_sets_and_refs.
      
      	* ira.c: Add more comments at the top.
      	(setup_stack_reg_pressure_class, setup_pressure_classes):
      	Add comments how we compute the register pressure classes.
      	(setup_allocno_and_important_classes): Add more comments.
      	(setup_class_translate_array, reorder_important_classes)
      	(setup_reg_class_relations): Add comments.
      
      	* ira-emit.c: Add 2011 to the Copyright line.  Add comments at the
      	start of the file.
      
      	* ira-color.c: Add 2011 to the Copyright line.
      	(assign_hard_reg):  Add more comments.
      	(improve_allocation): Ditto.
      
      	* ira-costs.c: Add 2011 to the Copyright line.
      	(setup_cost_classes, setup_regno_cost_classes_by_aclass): Add more
      	comments.
      	(setup_regno_cost_classes_by_mode): Ditto.
      
      	Initial patches from ira-improv branch:
      
      	2010-08-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-build.c: (ira_create_object): Remove initialization of
      	OBJECT_PROFITABLE_HARD_REGS.  Initialize OBJECT_ADD_DATA.
      	(ira_create_allocno): Remove initialization of
      	ALLOCNO_MEM_OPTIMIZED_DEST, ALLOCNO_MEM_OPTIMIZED_DEST_P,
      	ALLOCNO_SOMEWHERE_RENAMED_P, ALLOCNO_CHILD_RENAMED_P,
      	ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
      	ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO,
      	ALLOCNO_FIRST_COALESCED_ALLOCNO, ALLOCNO_NEXT_COALESCED_ALLOCNO.
      	Initialize ALLOCNO_ADD_DATA.
      	(copy_info_to_removed_store_destinations): Use ALLOCNO_EMIT_DATA
      	and allocno_emit_reg instead of ALLOCNO_MEM_OPTIMIZED_DEST_P and
      	ALLOCNO_REG.
      	(ira_flattening): Ditto.  Use ALLOCNO_EMIT_DATA instead of
      	ALLOCNO_MEM_OPTIMIZED_DEST and ALLOCNO_SOMEWHERE_RENAMED_P.
      
      	* ira.c (ira_reallocate): Remove.
      	(setup_pressure_classes): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      	(setup_allocno_assignment_flags): Use ALLOCNO_EMIT_DATA.
      	(ira): Call ira_initiate_emit_data and ira_finish_emit_data.
      
      	* ira-color.c: Use ALLOCNO_COLOR_DATA instead of
      	ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P, ALLOCNO_COLORABLE_P,
      	ALLOCNO_AVAILABLE_REGS_NUM, ALLOCNO_NEXT_BUCKET_ALLOCNO,
      	ALLOCNO_PREV_BUCKET_ALLOCNO. ALLOCNO_TEMP. Use OBJECT_COLOR_DATA
      	instead of OBJECT_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE,
      	OBJECT_HARD_REGS_SUBNODES_START, OBJECT_HARD_REGS_SUBNODES_NUM.
      	Fix formatting.
      	(object_hard_regs_t, object_hard_regs_node_t): Move from
      	ira-int.h.
      	(struct object_hard_regs, struct object_hard_regs_node): Ditto.
      	(struct allocno_color_data): New.
      	(allocno_color_data_t): New typedef.
      	(allocno_color_data): New definition.
      	(ALLOCNO_COLOR_DATA): New macro.
      	(struct object_color_data): New.
      	(object_color_data_t): New typedef.
      	(object_color_data): New definition.
      	(OBJECT_COLOR_DATA): New macro.
      	(update_copy_costs, calculate_allocno_spill_cost): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      	(move_spill_restore, update_curr_costs): Ditto.
      	(allocno_spill_priority): Make it inline.
      	(color_pass): Allocate and free allocno_color_dat and
      	object_color_data.
      	(struct coalesce_data, coalesce_data_t): New.
      	(allocno_coalesce_data): New definition.
      	(ALLOCNO_COALESCE_DATA): New macro.
      	(merge_allocnos, coalesced_allocno_conflict_p): Use
      	ALLOCNO_COALESCED_DATA instead of ALLOCNO_FIRST_COALESCED_ALLOCNO,
      	ALLOCNO_NEXT_COALESCED_ALLOCNO, ALLOCNO_TEMP.
      	(coalesce_allocnos): Ditto.
      	(setup_coalesced_allocno_costs_and_nums): Ditto.
      	(collect_spilled_coalesced_allocnos): Ditto.
      	(slot_coalesced_allocno_live_ranges_intersect_p): Ditto.
      	(setup_slot_coalesced_allocno_live_ranges): Ditto.
      	(coalesce_spill_slots): Ditto.
      	(ira_sort_regnos_for_alter_reg): Ditto.  Allocate, initialize and
      	free allocno_coalesce_data.
      
      	* ira-conflicts.c: Fix formatting.
      	(process_regs_for_copy): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      	(build_object_conflicts): Optimize.
      
      	* ira-costs.c (record_reg_classes): Optimize.  Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost, ira_may_move_in_cost, and
      	ira_may_move_out_cost instead of ira_get_register_move_cost and
      	ira_get_may_move_cost.
      	(record_address_regs): Ditto.
      	(scan_one_insn): Optimize.
      	(find_costs_and_classes): Optimize.
      	(process_bb_node_for_hard_reg_moves): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      
      	* ira-emit.c: Use allocno_emit_reg, ALLOCNO_EMIT_DATA instead of
      	ALLOCNO_REG, ALLOCNO_CHILD_RENAMED_P, ALLOCNO_MEM_OPTIMIZED_DEST,
      	ALLOCNO_MEM_OPTIMIZED_DEST_P, and ALLOCNO_SOMEWHERE_RENAMED_P.
      	(ira_allocno_emit_data, void_p, new_allocno_emit_data_vec): New
      	definitions.
      	(ira_initiate_emit_data, ira_finish_emit_data)
      	(create_new_allocno): New functions.
      	(modify_move_list): Call create_new_alloc instead of
      	ira_create_allocno.
      	(emit_move_list): Call ira_init_register_move_cost_if_necessary.
      	Use ira_register_move_cost instead of ira_get_register_move_cost.
      
      	* ira-int.h: Fix some comments.
      	(object_hard_regs_t, object_hard_regs_node_t): Move
      	to ira-color.c.
      	(struct object_hard_regs, struct object_hard_regs_node):
      	Ditto.
      	(struct ira_object): Remove profitable_hard_regs, hard_regs_node,
      	hard_regs_subnodes_start, hard_regs_subnodes_num.  Add new member
      	add_data.
      	(struct ira_allocno): Make mode and aclass a bitfield.  Move other
      	bitfield after mode.  Make hard_regno a short int.  Make
      	hard_regno short.  Remove first_coalesced_allocno and
      	next_coalesced_allocno.  Move mem_optimized_dest_p,
      	somewhere_renamed_p, child_renamed_p, reg, and mem_optimized_dest
      	into struct ira_emit_data.  Remove in_graph_p, may_be_spilled_p,
      	available_regs_num, next_bucket_allocno, prev_bucket_allocno,
      	temp, colorable_p.  Add new member add_data.
      	(ALLOCNO_IN_GRAPH_P, ALLOCNO_MAY_BE_SPILLED_P): Remove.
      	(ALLOCNO_COLORABLE_P, ALLOCNO_AVAILABLE_REGS_NUM): Remove.
      	(ALLOCNO_NEXT_BUCKET_ALLOCNO, ALLOCNO_PREV_BUCKET_ALLOCNO): Remove.
      	(ALLOCNO_TEMP, ALLOCNO_FIRST_COALESCED_ALLOCNO): Remove.
      	(ALLOCNO_NEXT_COALESCED_ALLOCNO): Remove.
      	(ALLOCNO_ADD_DATA): New macro.
      	(ira_emit_data_t): New typedef.
      	(struct ira_emit_data): New.  Move mem_optimized_dest_p,
      	somewhere_renamed_p, child_renamed_p, reg, mem_optimized_dest
      	from struct ira_allocno.
      	(ALLOCNO_EMIT_DATA): New macro.
      	(ira_allocno_emit_data, allocno_emit_reg): New.
      	(ALLOCNO_PROFITABLE_HARD_REGS, OBJECT_HARD_REGS_NODE): Remove.
      	(OBJECT_HARD_REGS_SUBNODES_STAR, OBJECT_HARD_REGS_SUBNODES_NUM):
      	Remove.
      	(OBJECT_ADD_DATA): New macro.
      	(ira_reallocate): Remove.
      	(ira_initiate_emit_data, ira_finish_emit_data): New.
      	(ira_get_register_move_cost, ira_get_may_move_cost): Remove.
      	(ira_init_register_move_cost_if_necessary): New.
      	(ira_object_conflict_iter_next): Merge into
      	ira_object_conflict_iter_cond.
      	(FOR_EACH_OBJECT_CONFLICT): Don't use
      	ira_object_conflict_iter_next.
      
      	* ira-live.c: (process_single_reg_class_operands): Call
      	ira_init_register_move_cost_if_necessary.  Use
      	ira_register_move_cost instead of ira_get_register_move_cost.
      
      	2010-08-13  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-int.h (struct target_ira_int): Remove x_cost_classes.
      
      	* ira-costs.c: Fix formatting.
      	(cost_classes, cost_classes_num): Remove.
      	(struct cost_classes, cost_classes_t, const_cost_classes_t): New.
      	(regno_cost_classes, cost_classes_hash, cost_classes_eq): New.
      	(cost_classes_del, cost_classes_htab): New.
      	(cost_classes_aclass_cache, cost_classes_mode_cache): New.
      	(initiate_regno_cost_classes, setup_cost_classes): New.
      	(setup_regno_cost_classes_by_aclass): New.
      	(setup_regno_cost_classes_by_mode, finish_regno_cost_classes):
      	New.
      	(record_reg_classes): Use regno_cost_classes instead of
      	cost_classes.  Move checking opposite operand up.
      	(record_address_regs): Use regno_cost_classes
      	instead of cost_classes.
      	(scan_one_insn): Ditto.  Use always general register.
      	(print_allocno_costs): Use regno_cost_classes instead of
      	cost_classes.
      	(print_pseudo_costs): Ditto.  Use Reg_N_REFS.
      	(find_costs_and_classes): Set up cost classes for each registers.
      	Use also their mode for this.  Use regno_cost_classes instead of
      	cost_classes.
      	(setup_allocno_class_and_costs): Use regno_cost_classes instead of
      	cost_classes.
      	(free_ira_costs, ira_init_costs): Don't use cost_classes.
      	(ira_costs, ira_set_pseudo_classes): Call
      	initiate_regno_cost_classes and finish_regno_cost_classes.
      
      	2010-10-04  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* target-def.h (TARGET_IRA_COVER_CLASSES): Remove.
      
      	* target.def (ira_cover_classes): Remove.
      
      	* doc/tm.texi: Remove TARGET_IRA_COVER_CLASSES and
      	IRA_COVER_CLASSES.
      
      	* doc/tm.texi.in: Ditto.
      
      	* ira-conflicts.c: Remove mentioning cover classes from the file.
      	Use ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS.  Use
      	ALLOCNO_COVER_CLASS_COST instead of ALLOCNO_CLASS_COST.  Fix
      	formatting.
      
      	* targhooks.c (default_ira_cover_classes): Remove.
      
      	* targhooks.h (default_ira_cover_classes): Ditto.
      
      	* haifa-sched.c: Remove mentioning cover classes from the file.
      	Use ira_reg_pressure_cover instead of ira_reg_class_cover.  Use
      	ira_pressure_classes and ira_pressure_classes_num instead of
      	ira_reg_class_cover_size and ira_reg_class_cover.  Use
      	sched_regno_pressure_class instead of sched_regno_cover_class.
      	(mark_regno_birth_or_death, setup_insn_reg_pressure_info): Use
      	ira_reg_class_max_nregs instead of ira_reg_class_nregs.
      
      	* ira-int.h: Add 2010 to Copyright.  Remove mentioning cover
      	classes from the file.
      	(object_hard_regs_t, object_hard_regs_node_t): New typedefs.
      	(struct object_hard_regs, struct object_hard_regs_node): New.
      	(struct ira_object): New members profitable_hard_regs,
      	hard_regs_node, hard_regs_subnodes_start, hard_regs_subnodes_num.
      	(struct ira_allocno): Rename cover_class to aclass.  Rename
      	cover_class_cost and updated_cover_class_cost to class_cost and
      	updated_class_cost.  Remove splay_removed_p and
      	left_conflict_size.  Add new members colorable_p.
      	(ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICTS_SIZE): Remove.
      	(ALLOCNO_COLORABLE_P): New macro.
      	(ALLOCNO_COVER_CLASS): Rename to ALLOCNO_CLASS.
      	(ALLOCNO_COVER_CLASS_COST, ALLOCNO_UPDATED_COVER_CLASS_COST):
      	Rename to ALLOCNO_CLASS_COST and ALLOCNO_UPDATED__CLASS_COST.
      	(OBJECT_...): Rename parameter C to O.
      	(OBJECT_PROFITABLE_HARD_REGS): New macro.
      	(OBJECT_HARD_REGS_NODE, OBJECT_HARD_REGS_SUBNODES_START)
      	(OBJECT_HARD_REGS_SUBNODES_NUM): New macros.
      	(struct target_ira_int): New members x_ira_max_memory_move_cost,
      	x_ira_max_register_move_cost, x_ira_max_may_move_in_cost,
      	x_ira_max_may_move_out_cost, x_ira_reg_allocno_class_p,
      	x_ira_reg_pressure_class_p, x_ira_important_class_nums,
      	x_ira_reg_class_superunion.  Rename x_prohibited_class_mode_reg to
      	x_ira_prohibited_class_mode_reg.  Rename x_ira_reg_class_union to
      	x_ira_reg_class_subunion.
      	(ira_max_memory_move_cost, ira_max_register_move_cost)
      	(ira_max_may_move_in_cost, ira_max_may_move_out_cost)
      	(ira_reg_allocno_class_p, ira_reg_pressure_class_p)
      	(ira_important_class_nums, ira_reg_class_superunion): New macros.
      	(prohibited_class_mode_regs): Rename to
      	ira_prohibited_class_mode_regs.
      	(ira_reg_class_union): Rename to ira_reg_class_subunion.
      	(ira_debug_class_cover): Rename to ira_debug_allocno_classes.
      	(ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
      	(ira_tune_allocno_costs_and_cover_classes): Rename to
      	ira_tune_allocno_costs.
      	(ira_debug_hard_regs_forest): New.
      	(ira_object_conflict_iter_init, ira_object_conflict_iter_cond)
      	(ira_object_conflict_iter_next): Fix comments.
      	(ira_hard_reg_set_intersection_p, hard_reg_set_size): New
      	functions.
      	(ira_allocate_and_set_costs, ira_allocate_and_copy_costs): Rename
      	cover_class to aclass.
      	(ira_allocate_and_accumulate_costs): Ditto.
      	(ira_allocate_and_set_or_copy_costs): Ditto.
      
      	* opts.c (decode_options): Remove ira_cover_class check.
      
      	* ira-color.c: Remove mentioning cover classes from the file.  Use
      	ALLOCNO_CLASS, ALLOCNO_CLASS_COST, and ALLOCNO_UPDATED_CLASS_COST
      	instead of ALLOCNO_COVER_CLASS, ALLOCNO_COVER_CLASS_COST, and
      	ALLOCNO_UPDATED_COVER_CLASS_COST.  Fix formatting.
      	(splay-tree.h): Remove include.
      	(allocno_coalesced_p, processed_coalesced_allocno_bitmap): Move
      	before copy_freq_compare_func.
      	(allocnos_for_spilling, removed_splay_allocno_vec): Remove.
      	(object_hard_regs_vec, object_hard_regs_htab, node_check_tick):
      	New definitions.
      	(hard_regs_roots, hard_regs_node_vec): Ditto.
      	(object_hard_regs_hash, object_hard_regs_eq, find_hard_regs): Ditto.
      	(insert_hard_regs, init_object_hard_regs, add_object_hard_regs): Ditto.
      	(finish_object_hard_regs, object_hard_regs_compare): Ditto.
      	(create_new_object_hard_regs_node): Ditto.
      	(add_new_object_hard_regs_node_to_forest): Ditto.
      	(add_object_hard_regs_to_forest, collect_object_hard_regs_cover):
      	Ditto.
      	(setup_object_hard_regs_nodes_parent, first_common_ancestor_node):
      	Ditto.
      	(print_hard_reg_set, print_hard_regs_subforest): Ditto.
      	(print_hard_regs_forest, ira_debug_hard_regs_forest): Ditto.
      	(remove_unused_object_hard_regs_nodes): Ditto.
      	(enumerate_object_hard_regs_nodes): Ditto.
      	(object_hard_regs_nodes_num, object_hard_regs_nodes): Ditto.
      	(object_hard_regs_subnode_t): Ditto.
      	(struct object_hard_regs_subnode): Ditto.
      	(object_hard_regs_subnodes, object_hard_regs_subnode_index): Ditto.
      	(setup_object_hard_regs_subnode_index): Ditto.
      	(get_object_hard_regs_subnodes_num): Ditto.
      	(form_object_hard_regs_nodes_forest): Ditto.
      	(finish_object_hard_regs_nodes_tree): Ditto.
      	(finish_object_hard_regs_nodes_forest): Ditto.
      	(allocnos_have_intersected_live_ranges_p): Rename to
      	allocnos_conflict_by_live_ranges_p.  Move before
      	copy_freq_compare_func.
      	(pseudos_have_intersected_live_ranges_p): Rename to
      	conflict_by_live_ranges_p.  Move before copy_freq_compare_func.
      	(setup_left_conflict_sizes_p, update_left_conflict_sizes_p): Ditto.
      	(empty_profitable_hard_regs, setup_profitable_hard_regs): Ditto.
      	(update_copy_costs): Remove assert.  Skip cost update if the hard
      	reg does not belong the class.
      	(assign_hard_reg): Process only profitable hard regs.
      	(uncolorable_allocnos_num): Make it scalar.
      	(allocno_spill_priority): Use ALLOCNO_EXCESS_PRESSURE_POINTS_NUM
      	and ira_reg_class_max_nregs instead of ALLOCNO_LEFT_CONFLICTS_SIZE
      	and ira_reg_class_max_nregs.
      	(bucket_allocno_compare_func): Check frequency first.
      	(sort_bucket): Add compare function as a parameter.
      	(add_allocno_to_ordered_bucket): Assume no coalesced allocnos.
      	(uncolorable_allocnos_splay_tree, USE_SPLAY_P): Remove.
      	(push_allocno_to_stack): Rewrite for checking new allocno
      	colorability.
      	(remove_allocno_from_bucket_and_push): Print cost too.  Remove
      	assert.
      	(push_only_colorable): Pass new parameter to sort_bucket.
      	(push_allocno_to_spill): Remove.
      	(allocno_spill_priority_compare): Make it inline and rewrite.
      	(splay_tree_allocate, splay_tree_free): Remove.
      	(allocno_spill_sort_compare): New function.
      	(push_allocnos_to_stack): Sort allocnos for spilling once.  Don't
      	build and use splay tree.  Choose first allocno in uncolorable
      	allocno bucket to spill.  Remove setting spill cost.
      	(all_conflicting_hard_regs): Remove.
      	(setup_allocno_available_regs_num): Check only profitable hard
      	regs.  Print info about hard regs nodes.
      	(setup_allocno_left_conflicts_size): Remove.
      	(put_allocno_into_bucket): Don't call
      	setup_allocno_left_conflicts_size.  Use
      	setup_left_conflict_sizes_p.
      	(improve_allocation): New.
      	(color_allocnos): Call setup_profitable_hard_regs,
      	form_object_hard_regs_nodes_forest, improve_allocation,
      	finish_object_hard_regs_nodes_forest.  Setup spill cost.
      	(print_loop_title): Use pressure classes.
      	(color_allocnso): Ditto.
      	(do_coloring): Remove allocation and freeing splay_tree_node_pool
      	and allocnos_for_spilling.
      	(ira_sort_regnos_for_alter_reg): Don't setup members
      	{first,next}_coalesced_allocno.
      	(color): Remove allocating and freeing removed_splay_allocno_vec.
      	(fast_allocation): Use ira_prohibited_class_mode_regs instead of
      	prohibited_class_mode_regs.
      
      	* ira-lives.c: Remove mentioning cover classes from the file.  Fix
      	formatting.
      	(update_allocno_pressure_excess_length): Use pressure classes.
      	(inc_register_pressure, dec_register_pressure): Check for pressure
      	class.
      	(mark_pseudo_regno_live, mark_pseudo_regno_subword_live): Use
      	pressure class.  Use ira_reg_class_nregs instead of
      	ira_reg_class_max_nregs.
      	(mark_pseudo_regno_dead, mark_pseudo_regno_subword_dead): Ditto.
      	(mark_hard_reg_live, mark_hard_reg_dead): Use pressure class.
      	(single_reg_class): Use ira_reg_class_nregs instead of
      	ira_reg_class_max_nregs.
      	(process_bb_node_lives): Use pressure classes.
      
      	* ira-emit.c: Remove mentioning cover classes from the file.  Use
      	ALLOCNO_CLASS instead of ALLOCNO_COVER_CLASS.  Fix formatting.
      	(change_loop): Use pressure classes.
      	(modify_move_list): Call ira_set_allocno_class instead of
      	ira_set_allocno_cover_class.
      
      	* ira-build.c: Remove mentioning cover classes from the file.  Use
      	ALLOCNO_CLASS and ALLOCNO_CLASS_COST instead of
      	ALLOCNO_COVER_CLASS and ALLOCNO_COVER_CLASS_COST.  Use
      	ALLOCNO_UPDATED_CLASS_COST instead of
      	ALLOCNO_UPDATED_COVER_CLASS_COST.  Fix formatting.
      	(ira_create_object): Initiate OBJECT_PROFITABLE_HARD_REGS.
      	(ira_create_allocno): Remove initialization of
      	ALLOCNO_SPLAY_REMOVED_P, ALLOCNO_LEFT_CONFLICT_SIZE.  Initialize
      	ALLOCNO_COLORABLE_P.
      	(ira_set_allocno_cover_class): Rename to ira_set_allocno_class.
      	Update conflict regs for the objects.
      	(create_cap_allocno): Remove assert.  Don't propagate
      	ALLOCNO_AVAILABLE_REGS_NUM.
      	(ira_free_allocno_costs): New function.
      	(finish_allocno): Change a part of code into call of
      	ira_free_allocno_costs.
      	(low_pressure_loop_node_p): Use pressure classes.
      	(object_range_compare_func): Don't compare classes.
      	(setup_min_max_conflict_allocno_ids): Ditto.
      
      	* loop-invariant.c: Remove mentioning cover classes from the file.
      	Use ira_pressure_classes and ira_pressure_classes_num instead of
      	ira_reg_class_cover_size and ira_reg_class_cover.  Fix formatting.
      	(get_cover_class_and_nregs): Rename to
      	get_cover_pressure_and_nregs.  Use ira_reg_class_max_nregs instead
      	of ira_reg_class_nregs.  Use reg_allocno_class instead of
      	reg_cover_class.
      	(get_inv_cost): Use instead ira_stack_reg_pressure_class of
      	STACK_REG_COVER_CLASS.
      	(get_regno_cover_class): Rename to get_regno_pressure_class.
      	(move_loop_invariants): Initialize and finalize regstat.
      
      	* ira.c: Remove mentioning cover classes from the file.  Add
      	comments about coloring without cover classes.  Use ALLOCNO_CLASS
      	instead of ALLOCNO_COVER_CLASS.  Fix formatting.
      	(alloc_reg_class_subclasses, setup_reg_subclasses): Move it before
      	setup_class_subset_and_memory_move_costs.
      	(setup_stack_reg_pressure_class, setup_pressure_classes): New.
      	(setup_cover_and_important_classes): Rename to
      	setup_allocno_and_important_classes.
      	(setup_class_translate_array): New.
      	(setup_class_translate): Call it for allocno and pressure classes.
      	(cover_class_order): Rename to allocno_class_order.
      	(comp_reg_classes_func): Use ira_allocno_class_translate instead
      	of ira_class_translate.
      	(reorder_important_classes): Set up ira_important_class_nums.
      	(setup_reg_class_relations): Set up ira_reg_class_superunion.
      	(print_class_cover): Rename to print_classes.  Add parameter.
      	(ira_debug_class_cover): Rename to ira_debug_allocno_classes.
      	Print pressure classes too.
      	(find_reg_class_closure): Rename to find_reg_classes.  Don't call
      	setup_reg_subclasses.
      	(ira_hard_regno_cover_class): Rename to
      	ira_hard_regno_allocno_class.
      	(ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
      	(setup_prohibited_class_mode_regs): Use
      	ira_prohibited_class_mode_regs instead of
      	prohibited_class_mode_regs.
      	(clarify_prohibited_class_mode_regs): New function.
      	(ira_init_register_move_cost): Set up ira_max_register_move_cost,
      	ira_max_may_move_in_cost, and ira_max_may_move_out_cost.
      	(ira_init_once): Initialize them.
      	(free_register_move_costs): Process them.
      	(ira_init): Move calls of find_reg_classes and
      	setup_hard_regno_aclass after setup_prohibited_class_mode_regs.
      	Call clarify_prohibited_class_mode_regs.
      	(ira_no_alloc_reg): Remove.
      	(too_high_register_pressure_p): Use pressure classes.
      
      	* sched-deps.c: Remove mentioning cover classes from the file.
      	Use ira_reg_pressure_cover instead of ira_reg_class_cover.  Use
      	ira_pressure_classes and ira_pressure_classes_num instead of
      	ira_reg_class_cover_size and ira_reg_class_cover.
      	(mark_insn_hard_regno_birth, mark_hard_regno_death): Use
      	sched_regno_pressure_class instead of sched_regno_cover_class.
      	(mark_insn_pseudo_birth, mark_pseudo_death): Ditto.  Use
      	ira_reg_class_max_nregs instead of ira_reg_class_nregs.
      
      	* ira.h: Add 2010 to Copyright.
      	(ira_no_alloc_reg): Remove external.
      	(struct target_ira): Rename x_ira_hard_regno_cover_class,
      	x_ira_reg_class_cover_size, x_ira_reg_class_cover, and
      	x_ira_class_translate to x_ira_hard_regno_allocno_class,
      	x_ira_allocno_classes_num, x_ira_allocno_classes, and
      	x_ira_allocno_class_translate.  Add x_ira_pressure_classes_num,
      	x_ira_pressure_classes, x_ira_pressure_class_translate, and
      	x_ira_stack_reg_pressure_class.  Rename x_ira_reg_class_nregs to
      	x_ira_reg_class_max_nregs.  Add x_ira_reg_class_min_nregs and
      	x_ira_no_alloc_regs.
      	(ira_hard_regno_cover_class): Rename to
      	ira_hard_regno_allocno_class.
      	(ira_reg_class_cover_size, ira_reg_class_cover): Rename to
      	ira_allocno_classes_num and ira_allocno_classes.
      	(ira_class_translate): Rename to ira_allocno_class_translate.
      	(ira_pressure_classes_num, ira_pressure_classes): New definitions.
      	(ira_pressure_class_translate, ira_stack_reg_pressure_class): Ditto.
      	(ira_reg_class_nregs): Rename to ira_reg_class_max_nregs.
      	(ira_reg_class_min_nregs, ira_stack_reg_pressure_class): New
      	(ira_no_alloc_regs): New.
      
      	* ira-costs.c: Add 2010 to Copyright.  Remove mentioning cover
      	classes from the file.  Use ALLOCNO_CLASS instead of
      	ALLOCNO_COVER_CLASS.  Use ALLOCNO_CLASS_COST instead of
      	ALLOCNO_COVER_CLASS_COST.
      	(regno_cover_class): Rename to regno_aclass.
      	(record_reg_classes): Use ira_reg_class_subunion instead of
      	ira_reg_class_union.
      	(record_address_regs): Check overflow.
      	(scan_one_insn): Ditto.
      	(print_allocno_costs): Print total mem cost fore regional
      	allocation.
      	(print_pseudo_costs): Use REG_N_REFS.
      	(find_costs_and_classes): Use classes intersected with them on the
      	1st pass. Check overflow.  Use ira_reg_class_subunion instead of
      	ira_reg_class_union.  Use ira_allocno_class_translate and
      	regno_aclass instead of ira_class_translate and regno_cover_class.
      	Modify code for finding regno_aclass.  Setup preferred classes for
      	the next pass.
      	(setup_allocno_cover_class_and_costs): Rename to
      	setup_allocno_class_and_costs.  Use regno_aclass instead of
      	regno_cover_class.  Use ira_set_allocno_class instead of
      	ira_set_allocno_cover_class.
      	(init_costs, finish_costs): Use regno_aclass instead of
      	regno_cover_class.
      	(ira_costs): Use setup_allocno_class_and_costs instead of
      	setup_allocno_cover_class_and_costs.
      	(ira_tune_allocno_costs_and_cover_classes): Rename to
      	ira_tune_allocno_costs.  Check overflow.  Skip conflict hard regs
      	by processing objects.  Use ira_reg_class_max_nregs instead of
      	ira_reg_class_nregs.
      
      	* rtl.h (reg_cover_class): Rename to reg_allocno_class.
      
      	* sched-int.h: Remove mentioning cover classes from the file.
      	(sched_regno_cover_class): Rename to sched_regno_pressure_class.
      
      	* reginfo.c: Add 2010 to Copyright.  Remove mentioning cover
      	classes from the file.
      	(struct reg_pref): Rename coverclass into allocnoclass.
      	(reg_cover_class): Rename to reg_allocno_class.
      
      	* Makefile.in (ira-color.o): Remove SPLAY_TREE_H from
      	dependencies.
      
      	* config/alpha/alpha.h (IRA_COVER_CLASSES): Remove.
      
      	* config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/avr/avr.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/bfin/bfin.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/cris/cris.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/fr30/fr30.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/frv/frv.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/h8300/h8300.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/i386/i386.h (STACK_REG_COVER_CLASS): Ditto.
      
      	* config/i386/i386.c (TARGET_IRA_COVER_CLASSES)
      	(i386_ira_cover_classes): Ditto.
      
      	* config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/iq2000/iq2000.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/m32r/m32r.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/m68k/m68k.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/mcore/mcore.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/mep/mep.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/mips/mips.c (TARGET_IRA_COVER_CLASSES)
      	(mips_ira_cover_classes): Ditto.
      
      	* config/mn10300/mn10300.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/moxie/moxie.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/pa/pa64-regs.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/pa/pa32-regs.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/picochip/picochip.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/rs6000/rs6000.h (IRA_COVER_CLASSES_PRE_VSX)
      	(IRA_COVER_CLASSES_VSX): Ditto.
      
      	* config/rs6000/rs6000.c (TARGET_IRA_COVER_CLASSES)
      	(rs6000_ira_cover_classes): Ditto.
      
      	* config/rx/rx.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/s390/s390.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/score/score.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/sh/sh.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/sparc/sparc.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/spu/spu.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/stormy16/stormy16.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/v850/v850.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/vax/vax.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/xtensa/xtensa.h (IRA_COVER_CLASSES): Ditto.
      
      From-SVN: r171583
      Vladimir Makarov committed
  16. 08 Mar, 2011 1 commit
  17. 18 Feb, 2011 1 commit
  18. 21 Dec, 2010 1 commit
  19. 09 Dec, 2010 1 commit
    • rtl.h (invalid_mode_change_p): Adjust prototype. · fa1fabcb
      2010-12-09  Richard Guenther  <rguenther@suse.de>
      
      	* rtl.h (invalid_mode_change_p): Adjust prototype.
      	* reginfo.c (invalid_mode_change_p): Remove from argument.
      	* ira-costs.c (print_allocno_costs): Adjust callers.
      	(find_costs_and_classes): Likewise.
      
      2010-12-09  Richard Guenther  <rguenther@suse.de>
      
      	* ira.c (ira): Do not call finish_subregs_of_mode.
      	* ira-costs.c (finish_costs): Call finish_subregs_of_mode.
      
      From-SVN: r167631
      Richard Guenther committed
  20. 06 Dec, 2010 1 commit
  21. 04 Nov, 2010 1 commit
  22. 14 Oct, 2010 1 commit
  23. 04 Oct, 2010 1 commit
    • common.opt (fira-coalesce): Remove. · 22b0982c
      2010-10-04  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* common.opt (fira-coalesce): Remove.
      
      	* doc/invoke.texi (flag_ira_coalesce): Remove.
      
      	* ira-color.c (allocno_coalesced_p): Move before
      	copy_freq_compare_func.
      	processed_coalesced_allocno_bitmap): Ditto.
      	(update_conflict_hard_regno_costs): Don't use
      	ALLOCNO_FIRST_COALESCED_ALLOCNO.
      	(allocno_cost_compare_func, print_coalesced_allocno): Remove.
      	(assign_hard_reg): Assume no coalesced allocnos.
      	(get_coalesced_allocnos_attributes): Remove.
      	(bucket_allocno_compare_func): Assume no coalesced allocnos.
      	(push_allocno_to_stack): Ditto.
      	(remove_allocno_from_bucket_and_push): Use
      	ira_print_expanded_allocno instead of print_coalesced_allocno.
      	(push_allocnos_to_stack): Assume uncoalesced allocnos.
      	(all_conflicting_hard_regs_coalesced): Ditto.  Rename to
      	all_conflicting_hard_regs.
      	(setup_allocno_available_regs_num): Assume uncoalesced allocnos.
      	(setup_allocno_left_conflicts_size): Ditto.
      	(put_allocno_into_bucket): Ditto.
      	(copy_freq_compare_func): Remove.
      	(copy_freq_compare_func, merge_allocnos): Move before
      	coalesced_pseudo_reg_freq_compare.
      	coalesced_allocno_conflict_p): Ditto.
      	(coalesced_allocno_conflict_p, coalesce_allocnos): Ditto.  Remove
      	parameter.  Assume it true.
      	(color_allocnos): Assume uncoalesced allocnos.  Use
      	ira_print_expanded_allocno instead of print_coalesced_allocno.
      	(ira_sort_regnos_for_alter_reg): Call coalesce_allocnos without
      	parameter.
      
      	* ira.c: Remove comment about coalescing.
      
      From-SVN: r164959
      Vladimir Makarov committed
  24. 29 Sep, 2010 1 commit
    • optc-gen.awk: Generate global_options initializer instead of individual variables. · e3339d0f
      gcc:
      	* optc-gen.awk: Generate global_options initializer instead of
      	individual variables.  Add x_ prefix to names of structure
      	members.
      	* opth-gen.awk: Generate gcc_options structure.  Add x_ prefix to
      	names of structure members.
      	* doc/tm.texi.in (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Document.
      	* doc/tm.texi: Regenerate.
      	* alias.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* builtins.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER.
      	* c-parser.c (disable_extension_diagnostics,
      	restore_extension_diagnostics): Update names of cpp_options
      	members.
      	* combine.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* common.opt (fcompare-debug-second): Don't use Var.
      	* config/alpha/alpha.h (target_flags): Remove.
      	* config/arm/arm.h (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Define.
      	* config/bfin/bfin.h (target_flags): Remove.
      	* config/cris/cris.h (target_flags): Remove.
      	* config/i386/i386-c.c (ix86_pragma_target_parse): Update names of
      	cl_target_option members.
      	* config/i386/i386.c (ix86_force_align_arg_pointer): Remove.
      	(ix86_function_specific_print, ix86_valid_target_attribute_tree,
      	ix86_can_inline_p): Update names of cl_target_option members.
      	* config/i386/i386.h (ix86_isa_flags): Remove.
      	* config/lm32/lm32.h (target_flags): Remove.
      	* config/mcore/mcore.h (mcore_stack_increment): Remove.
      	* config/mcore/mcore.md (addsi3): Remove extern declaration of
      	flag_omit_frame_pointer.
      	* config/mep/mep.h (target_flags): Remove.
      	* config/mips/mips.h (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Define.
      	* config/mmix/mmix.h (target_flags): Remove.
      	* config/rs6000/rs6000.h (rs6000_xilinx_fpu, flag_pic,
      	flag_expensive_optimizations): Remove.
      	* config/s390/s390.h (flag_pic): Remove.
      	* config/score/score-conv.h (target_flags): Remove.
      	* config/sh/sh.h (sh_fixed_range_str): Remove.
      	* config/spu/spu.h (target_flags, spu_fixed_range_string): Remove.
      	* dbxout.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER
      	* df-scan.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* diagnostic.c (diagnostic_initialize): Update names of
      	diagnostic_context members.
      	* diagnostic.h (diagnostic_context): Rename inhibit_warnings and
      	warn_system_headers.
      	(diagnostic_report_warnings_p): Update for new names.
      	* dwarf2out.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER
      	* emit-rtl.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER and
      	HARD_FRAME_POINTER_IS_ARG_POINTER.
      	* flags.h (flag_compare_debug): Declare.
      	* ira.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* opts.c (flag_compare_debug): Define.
      	(common_handle_option): Update names of diagnostic_context
      	members.  Handle -fcompare-debug-second.
      	(fast_math_flags_struct_set_p): Update names of cl_optimization
      	members.
      	* reginfo.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* regrename.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* reload.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* reload1.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* resource.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER.
      	* rtl.h (HARD_FRAME_POINTER_IS_FRAME_POINTER,
      	HARD_FRAME_POINTER_IS_ARG_POINTER): Define and use.
      	* sel-sched.c: Use HARD_FRAME_POINTER_IS_FRAME_POINTER
      	* stmt.c: Use HARD_FRAME_POINTER_IS_ARG_POINTER.
      
      gcc/c-family:
      	* c-common.c (c_cpp_error): Update names of diagnostic_context
      	members.
      	* c-cppbuiltin.c (c_cpp_builtins_optimize_pragma): Update names of
      	cl_optimization members.
      	* c-opts.c (warning_as_error_callback, c_common_handle_option,
      	sanitize_cpp_opts, finish_options): Update names of cpp_options
      	members.
      
      gcc/fortran:
      	* cpp.c (cpp_define_builtins): Update names of gfc_option_t
      	members.
      	(gfc_cpp_post_options): Update names of cpp_options members.
      	(cb_cpp_error): Update names of diagnostic_context members.
      	* f95-lang.c (gfc_init_builtin_functions): Update names of
      	gfc_option_t members.
      	* gfortran.h (gfc_option_t): Rename warn_conversion and
      	flag_openmp.
      	* intrinsic.c (gfc_convert_type_warn): Update names of
      	gfc_option_t members.
      	* options.c (gfc_init_options, gfc_post_options, set_Wall,
      	gfc_handle_option): Update names of gfc_option_t members.
      	* parse.c (next_free, next_fixed): Update names of gfc_option_t
      	members.
      	* scanner.c (pedantic): Remove extern declaration.
      	(skip_free_comments, skip_fixed_comments, include_line): Update
      	names of gfc_option_t members.
      	* trans-decl.c (gfc_generate_function_code): Update names of
      	gfc_option_t members.
      
      gcc/java:
      	* java-tree.h (flag_filelist_file, flag_assert, flag_jni,
      	flag_force_classes_archive_check, flag_redundant, flag_newer,
      	flag_use_divide_subroutine, flag_use_atomic_builtins,
      	flag_use_boehm_gc, flag_hash_synchronization,
      	flag_check_references, flag_optimize_sci, flag_indirect_classes,
      	flag_indirect_dispatch, flag_store_check,
      	flag_reduced_reflection): Remove.
      	* jcf-dump.c (flag_newer): Remove.
      	* jcf.h (quiet_flag): Remove.
      	* parse.h (quiet_flag): Remove.
      
      libcpp:
      	* include/cpplib.h (cpp_options): Rename warn_deprecated,
      	warn_traditional, warn_long_long and pedantic.
      	* directives.c (directive_diagnostics, _cpp_handle_directive):
      	Update names of cpp_options members.
      	* expr.c (cpp_classify_number, eval_token): Update names of
      	cpp_options members.
      	* init.c (cpp_create_reader, post_options): Update names of
      	cpp_options members.
      	* internal.h (CPP_PEDANTIC, CPP_WTRADITIONAL): Update names of
      	cpp_options members.
      	* macro.c (parse_params): Update names of cpp_options members.
      
      From-SVN: r164723
      Joseph Myers committed
  25. 09 Sep, 2010 2 commits
  26. 02 Sep, 2010 1 commit
    • target.def (class_likely_spilled_p): New hook. · 07b8f0a8
      	* target.def (class_likely_spilled_p): New hook.
      	* doc/tm.texi.in (TARGET_CLASS_LIKELY_SPILLED_P): Document.
      	* doc/tm.texi: Regenerate.
      	* targhooks.c (default_class_likely_spilled_p): New function.
      	* targhooks.h (default_class_likely_spilled_p): Declare.
      	* regs.h (CLASS_LIKELY_SPILLED_P): Remove.
      	* combine.c: (cant_combine_insn_p, likely_spilled_retval_p): Use
      	TARGET_CLASS_LIKELY_SPILLED_P target hook. Use HARD_REGISTER_P macro.
      	Use fixed_reg_set instead of fixed_regs.
      	* cse.c (hash_rtx_cb): Use TARGET_CLASS_LIKELY_SPILLED_P target hook.
      	* calls.c (avoid_likely_spilled_reg): Ditto.
      	* ira-conflicts.c: (ira_build_conflicts): Ditto.
      	* ira.c (update_equiv_regs): Ditto.
      	* mode-switching.c (create_pre_exit): Ditto.
      	* regmove.c (find_matches): Ditto.
      	(regclass_compatible_p): Use TARGET_CLASS_LIKELY_SPILLED_P target
      	hook.
      	* reload.c (SMALL_REGISTER_CLASS_P): Remove macro.
      	(small_register_class_p): New inline function.
      	(push_secondary_reload, find_reusable_reload, find_reloads): Use
      	small_register_class_p instead of SMALL_REGISTER_CLASS_P.
      
      	* config/i386/i386.h (CLASS_LIKELY_SPILLED_P): Remove.
      	* config/i386/i386.c (ix86_class_likely_spilled_p): New.
      	(TARGET_CLASS_LIKELY_SPILLED_P): Define.
      
      From-SVN: r163779
      Anatoly Sokolov committed
  27. 05 Aug, 2010 1 commit
    • From Martin Thuresson <martint@google.com> · 5444da31
      	* postreload.c (reload_cse_simplify_operands): Use
      	SET_REGNO_RAW instead of SET_REGNO.
      	* caller-save.c (reg_save_code): Use SET_REGNO_RAW instead of
      	SET_REGNO.
      	* ira.c (setup_prohibited_mode_move_regs): Use SET_REGNO_RAW
      	instead of SET_REGNO.
      	* rtl.h (SET_REGNO_RAW): New macro.
      
      From-SVN: r162924
      Bernd Schmidt committed
  28. 27 Jul, 2010 1 commit
    • rtl.def (DEBUG_INSN, [...]): Swap operands 4 and 5. · 418e920f
      	* rtl.def (DEBUG_INSN, INSN, JUMP_INSN, CALL_INSN, NOTE): Swap operands
      	4 and 5.
      	* rtl.h (PATTERN, INSN_LOCATOR, NOTE_DATA, NOTE_DELETED_LABEL_NAME,
      	NOTE_BLOCK, NOTE_EH_HANDLER, NOTE_BASIC_BLOCK, NOTE_VAR_LOCATION,
      	NOTE_KIND, LABEL_NUSES, LABEL_REFS): Adjust accordingly.
      	* gengtype.c (adjust_field_rtx_def): Swap operands 4 and 5 of
      	CODE_LABELs and NOTEs.
      	* caller-save.c (init_caller_save): Fix up gen_rtx_INSN call.
      	* combine.c (try_combine): Likewise.
      	* ira.c (setup_prohibited_mode_move_regs): Likewise.
      	* print-rtl.c (print_rtx): Start REG_NOTES on a new line.
      
      From-SVN: r162602
      Bernd Schmidt committed
  29. 22 Jul, 2010 2 commits
    • ira.c (check_allocation): Correctly handle the case where an allocno with two… · 8cfd82bf
      ira.c (check_allocation): Correctly handle the case where an allocno with two objects was allocated to a...
      
      	* ira.c (check_allocation): Correctly handle the case where an allocno
      	with two objects was allocated to a single reg.
      
      From-SVN: r162432
      Bernd Schmidt committed
    • ira-build.c (ira_create_object): New arg SUBWORD; all callers changed. · ac0ab4f7
      	* ira-build.c (ira_create_object): New arg SUBWORD; all callers changed.
      	Initialize OBJECT_SUBWORD.
      	(ira_create_allocno): Clear ALLOCNO_NUM_OBJECTS.
      	(ira_create_allocno_objects): Renamed from ira_create_allocno_object;
      	all callers changed.
      	(merge_hard_reg_conflicts): Iterate over allocno subobjects.
      	(finish_allocno): Likewise.
      	(move_allocno_live_ranges, copy_allocno_live_ranges): Likewise.
      	(remove_low_level_allocnos): Likewise.
      	(update_bad_spill_attribute): Likewise.
      	(setup_min_max_allocno_live_range_point): Likewise.
      	(sort_conflict_id_map): Likewise.
      	(ira_flattening): Likewise.  Use ior_hard_reg_conflicts.
      	(ior_hard_reg_conflicts): New function.
      	(ior_allocate_object_conflicts): Renamed first argument to OBJ.
      	(compress_conflict_vecs): Iterate over objects, not allocnos.
      	(ira_add_live_range_to_object): New function.
      	(object_range_compare_func): Renamed from allocno_range_compare_func.
      	All callers changed.
      	(setup_min_max_conflict_allocno_ids): For allocnos with multiple
      	subobjects, widen the min/max range of the lowest-order object to
      	potentially include all other such low-order objects.
      	* ira.c (ira_bad_reload_regno_1): Iterate over allocno subobjects.
      	(check_allocation): Likewise.  Use more fine-grained tests for register
      	conflicts.
      	* ira-color.c (allocnos_have_intersected_live_ranges_p): Iterate over
      	allocno subobjects.
      	(assign_hard_reg): Keep multiple sets of conflicts.  Make finer-grained
      	choices about which bits to set in each set.  Don't use
      	ira_hard_reg_not_in_set_p, perform a more elaborate test for conflicts
      	using the multiple sets we computed.
      	(push_allocno_to_stack): Iterate over allocno subobjects.
      	(all_conflicting_hard_regs_coalesced): New static function.
      	(setup_allocno_available_regs_num): Use it.
      	(setup_allocno_left_conflicts_size): Likewise.  Iterate over allocno
      	subobjects.
      	(coalesced_allocno_conflict): Test subobject 0 in each allocno.
      	(setup_allocno_priorities): Divide ALLOCNO_EXCESS_PRESSURE_POINTS_NUM
      	by ALLOCNO_NUM_OBJECTS.
      	(calculate_spill_cost): Likewise.
      	(color_pass): Express if statement in a more normal way.
      	(ira_reassign_conflict_allocnos): Iterate over allocno subobjects.
      	(slot_coalesced_allocno_live_ranges_intersect_p): Likewise.
      	(setup_slot_coalesced_allocno_live_ranges): Likewise.
      	(allocno_reload_assign): Likewise.
      	(ira_reassign_pseudos): Likewise.
      	(fast_allocation): Likewise.
      	* ira-conflicts.c (build_conflict_bit_table): Likewise.
      	(print_allocno_conflicts): Likewise.
      	(ira_build_conflicts): Likewise.
      	(allocnos_conflict_for_copy_p): Renamed from allocnos_conflict_p.  All
      	callers changed.  Test subword 0 of each allocno for conflicts.
      	(build_object_conflicts): Renamed from build_allocno_conflicts.  All
      	callers changed.  Iterate over allocno subobjects.
      	* ira-emit.c (modify_move_list): Iterate over allocno subobjects.
      	* ira-int.h (struct ira_allocno): New member. num_objects.  Rename object
      	to objects and change it into an array.
      	(ALLOCNO_OBJECT): Add new argument N.
      	(ALLOCNO_NUM_OBJECTS, OBJECT_SUBWORD): New macros.
      	(ira_create_allocno_objects): Renamed from ira_create_allocno_object.
      	(ior_hard_reg_conflicts): Declare.
      	(ira_add_live_range_to_object): Declare.
      	(ira_allocno_object_iterator): New.
      	(ira_allocno_object_iter_init, ira_allocno_object_iter_cond): New.
      	(FOR_EACH_ALLOCNO_OBJECT): New macro.
      	* ira-lives.c (objects_live): Renamed from allocnos_live; all uses changed.
      	(allocnos_processed): New sparseset.
      	(make_object_born): Renamed from make_allocno_born; take an ira_object_t
      	argument.  All callers changed.
      	(make_object_dead): Renamed from make_allocno_dead; take an ira_object t
      	argument.  All callers changed.
      	(update_allocno_pressure_excess_length): Take an ira_obejct_t argument.
      	All callers changed.
      	(mark_pseudo_regno_live): Iterate over allocno subobjects.
      	(mark_pseudo_regno_dead): Likewise.
      	(mark_pseudo_regno_subword_live, mark_pseudo_regno_subword_dead): New
      	functions.
      	(mark_ref_live): Detect subword accesses and call
      	mark_pseudo_regno_subword_live as appropriate.
      	(mark_ref_dead): Likewise for mark_pseudo_regno_subword_dead.
      	(process_bb_nodes_live): Deal with object-related updates first; set
      	and test bits in allocnos_processed to avoid computing allocno
      	statistics more than once.
      	(create_start_finish_chains): Iterate over objects, not allocnos.
      	(print_object_live_ranges): New function.
      	(print_allocno_live_ranges): Use it.
      	(ira_create_allocno_live_ranges): Allocate and free allocnos_processed
      	and objects_live.
      
      From-SVN: r162418
      Bernd Schmidt committed
  30. 14 Jul, 2010 2 commits
    • ira-int.h (ira_object_conflict_iterator): Rename from ira_allocno_conflict_iterator. · fa86d337
      	* ira-int.h (ira_object_conflict_iterator): Rename from
      	ira_allocno_conflict_iterator.
      	(ira_object_conflict_iter_init): Rename from
      	ira_allocno_conflict_iter_init, second arg changed to
      	* ira.c (check_allocation): Use FOR_EACH_OBJECT_CONFLICT rather than
      	FOR_EACH_ALLOCNO_CONFLICT.
      	* ira-color.c (assign_hard_reg, push_allocno_to_stack)
      	setup_allocno_left_conflicts_size, coalesced_allocno_conflict_p,
      	ira_reassign_conflict_allocnos, ira_reassign_pseudos): Likewise.
      	* ira-conflicts.c (print_allocno_conflicts): Likewise.
      
      From-SVN: r162168
      Bernd Schmidt committed
    • ira-int.h (struct ira_object): New. · a49ae217
      	* ira-int.h (struct ira_object): New.
      	(ira_object_t): New typedef.  Add DEF_VEC_P and DEF_VEC_ALLOC_P
      	for it.
      	(struct ira_allocno): Remove members min, max,
      	conflict_allocno_array, conflict_id, conflict_allocno_array_size,
      	conflict_allocnos_num and conflict_vec_p.  Add new member object.
      	(OBJECT_CONFLICT_ARRAY, OBJECT_CONFLICT_VEC_P,
      	OBJECT_NUM_CONFLICTS, OBJECT_CONFLICT_ARRAY_SIZE,
      	OBJECT_CONFLICT_HARD_REGS, OBJECT_TOTAL_CONFLICT_HARD_REGS,
      	OBJECT_MIN, OBJECT_MAX, OBJECT_CONFLICT_ID): Renamed from
      	ALLOCNO_CONFLICT_ALLOCNO_ARRAY, ALLOCNO_CONFLICT_VEC_P,
      	ALLOCNO_CONFLICT_ALLOCNOS_NUM, ALLOCNO_CONFLICT_ALLOCNO_ARRAY_SIZE,
      	ALLOCNO_CONFLICT_HARD_REGS, ALLOCNO_TOTAL_CONFLICT_HARD_REGS)
      	ALLOCNO_MIN, ALLOCNO_MAX, and ALLOCNO_CONFLICT_ID; now operate on
      	an ira_object_t rather than ira_allocno_t.  All uses changed.
      	(ira_object_id_map): Renamed from ira_conflict_id_allocno_map; now
      	contains a vector of ira_object_t; all uses changed.
      	(ira_objects_num): Declare variable.
      	(ira_create_allocno_object): Declare function.
      	(ira_conflict_vector_profitable_p): Adjust prototype.
      	(ira_allocate_conflict_vec): Renamed from
      	ira_allocate_allocno_conflict_vec; first arg now ira_object_t.
      	(ira_allocate_object_conflicts): Renamed from
      	ira_allocate_allocno_conflicts; first arg now ira_object_t.
      	(struct ira_object_iterator): New.
      	(ira_object_iter_init, ira_object_iter_cond, FOR_EACH_OBJECT): New.
      	(ira_allocno_conflict_iterator): Renamed member allocno_conflict_vec_p
      	to conflict_vec_p.  All uses changed.
      	(ira_allocno_conflict_iter_init, ira_allocno_conflict_iter_cond):
      	Changed to take into account that conflicts are now tracked for
      	objects.
      	* ira-conflicts.c (OBJECTS_CONFLICT_P): Renamed from
      	CONFLICT_ALLOCNO_P.  Args changed to accept ira_object_t.  All
      	uses changed.
      	(allocnos_conflict_p): New static function.
      	(collected_conflict_objects): Renamed from collected_allocno_objects;
      	now a vector of ira_object_t.  All uses changed.
      	(build_conflict_bit_table): Changed to take into account that
      	conflicts are now tracked for objects.
      	(process_regs_for_copy, propagate_copies, build_allocno_conflicts)
      	(print_allocno_conflicts, ira_build_conflicts): Likewise.
      	* ira-color.c (assign_hard_reg, setup_allocno_available_regs_num)
      	setup_allocno_left_conflicts_size, allocno_reload_assign,
      	fast_allocation): Likewise.
      	* ira-lives.c (make_hard_regno_born, make_allocno_born)
      	process_single_reg_class_operands, process_bb_node_lives): Likewise.
      	* ira-emit.c (modify_move_list, add_range_and_copies_from_move_list):
      	Likewise.
      	* ira-build.c (ira_objects_num): New variable.
      	(ira_object_id_map): Renamed from ira_conflict_id_allocno_map; now
      	contains a vector of ira_object_t; all uses changed.
      	(ira_object_id_map_vec): Corresponding change.
      	(object_pool): New static variable.
      	(initiate_allocnos): Initialize it.
      	(finish_allocnos): Free it.
      	(ira_create_object, ira_create_allocno_object, create_allocno_objects):
      	New functions.
      	(ira_create_allocno): Don't set members that were removed.
      	(ira_set_allocno_cover_class): Don't change conflict hard regs.
      	(merge_hard_reg_conflicts): Changed to take into account that
      	conflicts are now tracked for objects.
      	(ira_conflict_vector_profitable_p, ira_allocate_conflict_vec,
      	allocate_conflict_bit_vec, ira_allocate_object_conflicts,
      	compress_conflict_vecs, remove_low_level_allocnos, ira_flattening,
      	setup_min_max_allocno_live_range_point, allocno_range_compare_func,
      	setup_min_max_conflict_allocno_ids, ):  Likewise.
      	((add_to_conflicts): Renamed from add_to_allocno_conflicts, args changed
      	to ira_object_t; all callers changed.
      	(ira_add_conflict): Renamed from ira_add_allocno_conflict, args changed
      	to ira_object_t, all callers changed.
      	(clear_conflicts): Renamed from clear_allocno_conflicts, arg changed
      	to ira_object_t, all callers changed.
      	(conflict_check, curr_conflict_check_tick): Renamed from
      	allocno_conflict_check and curr_allocno_conflict_check_tick; all uses
      	changed.
      	(compress_conflict_vec): Renamed from compress_allocno_conflict_vec,
      	arg changed to ira_object_t, all callers changed.
      	(create_cap_allocno): Call ira_create_allocno_object.
      	(finish_allocno): Free the corresponding object.
      	(sort_conflict_id_map): Renamed from sort_conflict_id_allocno_map; all
      	callers changed.  Adjusted for dealing with objects.
      	(ira_build): Call create_allocno_objects after ira_costs.  Adjusted for
      	dealing with objects.
      	* ira.c (ira_bad_reload_regno_1): Adjusted for dealing with objects.
      
      From-SVN: r162166
      Bernd Schmidt committed
  31. 12 Jul, 2010 2 commits
    • ira-int.h (target_ira_int): Add x_ira_prohibited_mode_move_regs and... · 15e7b94f
      gcc/
      	* ira-int.h (target_ira_int): Add x_ira_prohibited_mode_move_regs
      	and x_ira_prohibited_mode_move_regs_initialized_p.
      	(ira_prohibited_mode_move_regs): Redefine as a macro.
      	* ira.c (ira_prohibited_mode_move_regs): Delete.
      	(ira_prohibited_mode_move_regs_initialized_p): Redefine as a macro.
      
      From-SVN: r162107
      Richard Sandiford committed
    • Makefile.in (target-globals.o): Depend on $(IRA_INT_H). · afcc66c4
      gcc/
      	* Makefile.in (target-globals.o): Depend on $(IRA_INT_H).
      	* ira-int.h (ira_max_nregs, ira_important_class_nums): Delete.
      	(target_ira_int): New structure.
      	(default_target_ira_int): Declare.
      	(this_target_ira_int): Declare as a variable or define as a macro.
      	(ira_reg_mode_hard_regset, ira_register_move_cost)
      	(ira_may_move_in_cost, ira_may_move_out_cost, ira_class_subset_p)
      	(ira_non_ordered_class_hard_regs, ira_class_hard_reg_index)
      	(prohibited_class_mode_regs, ira_important_classes_num)
      	(ira_important_classes, ira_reg_class_intersect)
      	(ira_reg_classes_intersect_p, ira_reg_class_super_classes)
      	(ira_reg_class_union): Redefine as macros.
      	* ira.h (target_ira): New structure.
      	(default_target_ira): Declare.
      	(this_target_ira): Declare as a variable or define as a macro.
      	(ira_available_class_regs, ira_hard_regno_cover_class)
      	(ira_reg_class_cover_size, ira_reg_class_cover, ira_class_translate)
      	(ira_reg_class_nregs, ira_memory_move_cost, ira_class_hard_regs)
      	(ira_class_hard_regs_num): Redefine as macros.
      	* ira.c (default_target_ira, default_target_ira_int): New variables.
      	(this_target_ira, this_target_ira_int): New conditional variables.
      	(ira_reg_mode_hard_regset, ira_memory_move_cost)
      	(ira_register_move_cost, ira_may_move_in_cost, ira_may_move_out_cost)
      	(ira_class_subset_p): Delete.
      	(no_unit_alloc_regs): Redefine as a macro.
      	(ira_class_hard_regs, ira_non_ordered_class_hard_regs)
      	(ira_class_hard_regs_num, ira_class_hard_reg_index)
      	(ira_available_class_regs): Delete.
      	(alloc_reg_class_subclasses): Redefine as a macro.
      	(ira_reg_class_cover_size, ira_reg_class_cover)
      	(ira_important_classes_num, ira_important_classes)
      	(ira_important_class_nums, ira_class_translate): Delete.
      	(cover_class_order): Document the variable's lifetime.
      	(reorder_important_classes): Don't set ira_important_class_nums.
      	(ira_reg_class_intersect, ira_reg_classes_intersect_p)
      	(ira_reg_class_super_classes, ira_reg_class_union)
      	(ira_hard_regno_cover_class, ira_reg_class_nregs, ira_max_nregs):
      	Delete.
      	(setup_reg_class_nregs): Don't set ira_max_regs.
      	(prohibited_class_mode_regs): Delete.
      	* target-globals.h (this_target_ira, this_target_ira_int): Declare.
      	(target_globals): Add ira and ira_int fields.
      	(restore_target_globals): Copy the ira field to this_target_ira
      	and the ira_int field to this_target_ira_int.
      	* target-globals.c: Include ira-int.h.
      	(default_target_globals): Initialize the ira and ira_int fields.
      	(save_target_globals): Likewise.
      
      From-SVN: r162102
      Richard Sandiford committed
  32. 08 Jul, 2010 1 commit
    • toplev.h: Do not include diagnostic-core.h. · 718f9c0f
      2010-07-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* toplev.h: Do not include diagnostic-core.h.
      	Include diagnostic-core.h in every file that includes toplev.h.
      	* c-tree.h: Do not include toplev.h.
      	* pretty-print.h: Update comment.
      	* Makefile.in: Update dependencies.
      	* alias.c: Include diagnostic-core.h in every file that includes
      	toplev.h.
      	* attribs.c: Likewise.
      	* auto-inc-dec.c: Likewise.
      	* bb-reorder.c: Likewise.
      	* bt-load.c: Likewise.
      	* caller-save.c: Likewise.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgbuild.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfgloop.c: Likewise.
      	* combine.c: Likewise.
      	* config/alpha/alpha.c: Likewise.
      	* config/arc/arc.c: Likewise.
      	* config/arm/arm.c: Likewise.
      	* config/arm/pe.c: Likewise.
      	* config/avr/avr.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/cris/cris.c: Likewise.
      	* config/crx/crx.c: Likewise.
      	* config/darwin-c.c: Likewise.
      	* config/darwin.c: Likewise.
      	* config/fr30/fr30.c: Likewise.
      	* config/frv/frv.c: Likewise.
      	* config/h8300/h8300.c: Likewise.
      	* config/host-darwin.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/i386/netware.c: Likewise.
      	* config/i386/nwld.c: Likewise.
      	* config/i386/winnt-cxx.c: Likewise.
      	* config/i386/winnt-stubs.c: Likewise.
      	* config/i386/winnt.c: Likewise.
      	* config/ia64/ia64-c.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/iq2000/iq2000.c: Likewise.
      	* config/lm32/lm32.c: Likewise.
      	* config/m32c/m32c-pragma.c: Likewise.
      	* config/m32c/m32c.c: Likewise.
      	* config/m32r/m32r.c: Likewise.
      	* config/m68hc11/m68hc11.c: Likewise.
      	* config/m68k/m68k.c: Likewise.
      	* config/mcore/mcore.c: Likewise.
      	* config/mep/mep-pragma.c: Likewise.
      	* config/mep/mep.c: Likewise.
      	* config/mmix/mmix.c: Likewise.
      	* config/mn10300/mn10300.c: Likewise.
      	* config/moxie/moxie.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/pdp11/pdp11.c: Likewise.
      	* config/picochip/picochip.c: Likewise.
      	* config/rs6000/rs6000-c.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/rx/rx.c: Likewise.
      	* config/s390/s390.c: Likewise.
      	* config/score/score.c: Likewise.
      	* config/score/score3.c: Likewise.
      	* config/score/score7.c: Likewise.
      	* config/sh/sh.c: Likewise.
      	* config/sh/symbian-base.c: Likewise.
      	* config/sh/symbian-c.c: Likewise.
      	* config/sh/symbian-cxx.c: Likewise.
      	* config/sol2-c.c: Likewise.
      	* config/sol2.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/spu/spu.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/v850/v850-c.c: Likewise.
      	* config/v850/v850.c: Likewise.
      	* config/vax/vax.c: Likewise.
      	* config/vxworks.c: Likewise.
      	* config/xtensa/xtensa.c: Likewise.
      	* convert.c: Likewise.
      	* cse.c: Likewise.
      	* cselib.c: Likewise.
      	* dbgcnt.c: Likewise.
      	* dbxout.c: Likewise.
      	* ddg.c: Likewise.
      	* dominance.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* explow.c: Likewise.
      	* expmed.c: Likewise.
      	* fixed-value.c: Likewise.
      	* fold-const.c: Likewise.
      	* fwprop.c: Likewise.
      	* gcse.c: Likewise.
      	* ggc-common.c: Likewise.
      	* ggc-page.c: Likewise.
      	* ggc-zone.c: Likewise.
      	* gimple-low.c: Likewise.
      	* gimplify.c: Likewise.
      	* graph.c: Likewise.
      	* haifa-sched.c: Likewise.
      	* ifcvt.c: Likewise.
      	* implicit-zee.c: Likewise.
      	* integrate.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-conflicts.c: Likewise.
      	* ira-costs.c: Likewise.
      	* ira-lives.c: Likewise.
      	* ira.c: Likewise.
      	* lists.c: Likewise.
      	* loop-doloop.c: Likewise.
      	* loop-iv.c: Likewise.
      	* lto-opts.c: Likewise.
      	* lto-symtab.c: Likewise.
      	* main.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* optabs.c: Likewise.
      	* params.c: Likewise.
      	* plugin.c: Likewise.
      	* postreload-gcse.c: Likewise.
      	* postreload.c: Likewise.
      	* predict.c: Likewise.
      	* profile.c: Likewise.
      	* real.c: Likewise.
      	* regcprop.c: Likewise.
      	* reginfo.c: Likewise.
      	* regmove.c: Likewise.
      	* reorg.c: Likewise.
      	* resource.c: Likewise.
      	* rtl.c: Likewise.
      	* rtlanal.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-rgn.c: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* simplify-rtx.c: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* targhooks.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-nomudflap.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-uninit.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-vect-data-refs.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vect-loop.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-vect-stmts.c: Likewise.
      	* tree-vrp.c: Likewise.
      	* varasm.c: Likewise.
      	* vec.c: Likewise.
      	* web.c: Likewise.
      	* xcoffout.c: Likewise.
      
      c-family/
      	* c-common.h: Include diagnostic-core.h. Error if already
      	included.
      	* c-semantics.c: Do not define GCC_DIAG_STYLE here.
      cp/
      	* cp-tree.h: Do not include toplev.h.
      	
      java/
      	* boehm.c: Include diagnostic-core.h in every file that includes
      	toplev.h.
      	* class.c: Likewise.
      	* constants.c: Likewise.
      	* decl.c: Likewise.
      	* except.c: Likewise.
      	* expr.c: Likewise.
      	* jcf-parse.c: Likewise.
      	* mangle.c: Likewise.
      	* mangle_name.c: Likewise.
      	* resource.c: Likewise.
      	* typeck.c: Likewise.
      	* verify-glue.c: Likewise.
      ada/
      	* gcc-interface/utils.c: Include diagnostic-core.h in every file
      	that includes toplev.h.
      lto/
      	* lto-coff.c: Include diagnostic-core.h in every file that
      	includes toplev.h.
      	* lto-elf.c: Likewise.
      	* lto-lang.c: Likewise.
      	* lto-macho.c: Likewise.
      
      From-SVN: r161943
      Manuel López-Ibáñez committed
  33. 30 Jun, 2010 1 commit
    • re PR middle-end/44566 (configuration with multiple targets / backends is not supported.) · a87cf97e
              PR other/44566
              * coretypes.h [!USED_FOR_TARGET] (reg_class_t): Define.
              * target.def (struct gcc_target): Replace enum reg_class with
              reg_class_t in hook argument / return types.
              * doc/tm.texi.in (TARGET_SECONDARY_RELOAD): Likewise.
              (TARGET_IRA_COVER_CLASSES, TARGET_MEMORY_MOVE_COST): Likewise.
              (TARGET_BRANCH_TARGET_REGISTER_CLASS): Likewise.
              * targhooks.h (default_branch_target_register_class): Likewise.
              (default_ira_cover_classes, default_secondary_reload): Likewise.
              (default_memory_move_cost, default_register_move_cost): Likewise.
              * targhooks.c (default_branch_target_register_class): Likewise.
              (default_ira_cover_classes, default_secondary_reload): Likewise.
              (default_memory_move_cost, default_register_move_cost): Likewise.
              * reload.c (push_secondary_reload, secondary_reload_class): Likewise.
              * bt-load.c (branch_target_load_optimize): Likewise.
              * ira.c (setup_cover_and_important_classes): Likewise.
              * ira-costs.c (copy_cost): Likewise.
              * reload1.c (emit_input_reload_insns): Likewise.
              * config/alpha/alpha.c (alpha_secondary_reload): Likewise.
              * config/frv/frv.c (frv_secondary_reload): Likewise.
              * config/s390/s390.c (s390_secondary_reload): Likewise.
              * config/i386/i386.c (i386_ira_cover_classes): Likewise.
              (ix86_secondary_reload, ix86_memory_move_cost): Likewise.
              (ix86_register_move_cost): Likewise.
              * config/sh/sh-protos.h (sh_secondary_reload): Likewise.
              * config/sh/sh.c (sh_target_reg_class, sh_secondary_reload): Likewise.
              * config/xtensa/xtensa.c (xtensa_secondary_reload): Likewise.
              * config/xtensa/xtensa-protos.h (xtensa_secondary_reload): Likewise.
              * config/rs6000/rs6000.c (rs6000_secondary_reload): Likewise.
              (rs6000_ira_cover_classes): Likewise.
              * config/picochip/picochip.c (picochip_secondary_reload): Likewise.
              * config/picochip/picochip-protos.h (picochip_secondary_reload):
              Likewise.
              * config/pa/pa.c (pa_secondary_reload): Likewise.
              * config/mips/mips.c (mips_ira_cover_classes): Likewise.
              * config/bfin/bfin.c (bfin_secondary_reload): Likewise.
              * config/ia64/ia64.c (ia64_register_move_cost): Likewise.
              * doc/tm.texi: Regenerate.
      
      From-SVN: r161633
      Joern Rennecke committed
  34. 27 Jun, 2010 1 commit
    • target.h (struct gcc_target): Add register_move_cost field. · de8f4b07
      	* target.h (struct gcc_target): Add register_move_cost field.
      	* target-def.h (TARGET_REGISTER_MOVE_COST): New.
      	(TARGET_INITIALIZER): Use TARGET_REGISTER_MOVE_COST.
      	* targhooks.c (default_register_move_cost): New function.
      	* targhooks.h (default_register_move_cost): Declare function.
      	* defaults.h (REGISTER_MOVE_COST): Delete.
      	* ira-int.h (ira_register_move_cost): Update comment.
      	* ira.c: (ira_register_move_cost): Update comment.
      	* reload.h (register_move_cost): Declare.
      	* reginfo.c (register_move_cost): New function.
      	(move_cost): Update comment.
      	(init_move_cost, memory_move_secondary_cost): Replace
      	REGISTER_MOVE_COST with register_move_cost.
      	* postreload.c (reload_cse_simplify_set): (Ditto.).
      	* reload.c (find_valid_class, find_reloads): (Ditto.).
      	* reload1.c (choose_reload_regs): (Ditto.).
      	* doc/tm.texi (TARGET_REGISTER_MOVE_COST): New.
      	(REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Update documentation.
      	* doc/md.texi (can_create_pseudo_p): Update documentation.
      
      	* config/i386/i386.h (MEMORY_MOVE_COST): Remove macro.
      	* config/i386/i386-protos.h (int ix86_memory_move_cost): Remove.
      	* config/i386/i386.h (ix86_memory_move_cost): Make static.
      	(TARGET_MEMORY_MOVE_COST): Define.
      
      	* config/ia64/ia64.h (MEMORY_MOVE_COST): Remove macro.
      	* config/ia64/ia64-protos.h (int ia64_memory_move_cost): Remove.
      	* config/ia64/ia64.h (ia64_memory_move_cost): Make static.
      	(TARGET_MEMORY_MOVE_COST): Define.
      
      From-SVN: r161470
      Anatoly Sokolov committed
  35. 24 Jun, 2010 1 commit
  36. 17 Jun, 2010 1 commit