This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Possible IRA bug in assign_hard_reg


Ian Bolton wrote:
Near the end of assign_hard_reg in ira-color.c, there is this code:


if (min_full_cost > mem_cost) { if (! retry_p && internal_flag_ira_verbose > 3 && ira_dump_file != NULL) fprintf (ira_dump_file, "(memory is more profitable %d vs %d) ", mem_cost, min_full_cost); best_hard_regno = -1; }


If retry_p is true then we are in reload, so I wouldn't expect us to override best_hard_regno in this case. I think the code should read:


if (min_full_cost > mem_cost && ! retry_p) { if (internal_flag_ira_verbose > 3 && ira_dump_file != NULL) fprintf (ira_dump_file, "(memory is more profitable %d vs %d) ", mem_cost, min_full_cost); best_hard_regno = -1; }


I'm probably wrong, but I wanted to check.


The original code is ok, I think.

First, retry_p is true not only from reload. It is true when we are trying to assign hard register after IR flattening during which new allocnos can be created to resolve cycles for register shuffling on region borders.

If memory is more profitable we should use independently from where we call assign_hard_reg.

Retry_p is used as guard for dump printing because it is a part of dump when allocno is popped from coloring stack (in this case retry_p is false).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]