IRA accumulated costs
Jeff Law
law@redhat.com
Thu Nov 6 17:11:00 GMT 2008
Vladimir Makarov wrote:
> Hi, Richard. Returning to accurate cost accumulation issue you found
> recently. Here is the patch fixing it. You could try, if you want,
> how MIPS will behave with it. The patch also more accurately
> calculates ALLOCNO_CALL_FREQ which affects decision to spill allocno
> in assign_hard_reg if it is more profitable.
>
>
> 2008-10-01 Vladimir Makarov <vmakarov@redhat.com>
>
> * ira-int.h (ira_allocno): Add member updated_cover_class_cost.
> (ALLOCNO_UPDATED_COVER_CLASS_COST): New.
> (ira_fast_allocation): Remove the prototype.
> * ira-color.c (update_copy_costs, allocno_cost_compare_func,
> assign_hard_reg, calculate_allocno_spill_cost): Use updated costs.
> (color_pass): Modify the updated costs.
> (ira_color): Rename to color. Make it static.
> (ira_fast_allocation): Rename to fast_allocation. Make it static.
> (ira_color): New function.
> * ira-conflicts.c (process_regs_for_copy): Propagate hard reg cost
> change.
>
> * ira-lives.c (last_call_num, allocno_saved_at_call): New
> variables.
> (set_allocno_live, clear_allocno_live, mark_ref_live,
> mark_ref_dead): Invalidate corresponding element of
> allocno_saved_at_call.
> (process_bb_node_lives): Increment last_call_num. Setup
> allocno_saved_at_call. Don't increase ALLOCNO_CALL_FREQ if the
> allocno was already saved.
> (ira_create_allocno_live_ranges): Initiate last_call_num and
> allocno_saved_at_call.
>
> * ira-build.c (ira_create_allocno): Initiate
> ALLOCNO_UPDATED_COVER_CLASS_COST.
> (create_cap_allocno, propagate_allocno_info,
> remove_unnecessary_allocnos): Remove setting updated costs.
> (ira_flattening): Set up ALLOCNO_UPDATED_COVER_CLASS_COST.
>
> * ira.c (ira): Don't call ira_fast_allocation.
>
> * ira-costs.c (setup_allocno_cover_class_and_costs): Don't set up
> updated costs.
>
This is fine. Sorry about the long delay.
Jeff
More information about the Gcc
mailing list