At the moment there are three sets of move costs: move_cost may_move_in_cost may_move_out_cost
ira_register_move_cost ira_may_move_in_cost ira_may_move_out_cost ira_max_register_move_cost ira_max_may_move_in_cost ira_max_may_move_out_cost Having the first two sets around together dates back to when IRA was an optional replacement for the old allocators. The third set is only used as a temporary while calculating the second set. This series removes the first and third sets. It isn't supposed to change the output in any way. Hopefully it will make things a little more efficient, but the real motivation was to make it easier to experiment with the costs. Note that move_cost and ira_register_move_cost are already the same. We make the latter an alias of the forner: ira_register_move_cost[mode] = move_cost[mode]; then modify it in-place: ira_register_move_cost[mode][cl1][cl2] = ira_max_register_move_cost[mode][cl1][cl2]; thus changing both. Bootstrapped & regression-tested on x86_64-linux-gnu and i686-linux-gnu. Also tested by making sure that the assembly output for recent cc1 .ii files is unchanged. Richard