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