On 2015-01-18 12:37 AM, Ajit Kumar Agarwal wrote:
Register allocation with two phase approach does optimal coalescing after the
spilling. Sometime Live range splitting makes
the coalescing non optimal. The splitted Live range are connected by move
instruction. Thus the Live range splitting and more
specifically aggressive Live range splitting increases the number of move
instruction and making the coalescing
non optimal.
The optimal coalescing should take the frequency of the regions into
consideration. The more the frequency of the region the cost
associated with the splitted live ranges will increase. If such cost increasing
then we should do aggressive coalescing in this case and
remove the move instruction by associating the same color or hard registers
associated with move instruction for the splitting live
ranges.
I am think of adding such heuristics in the GCC Top Down Region based register
allocator for the optimal coalescing, thereby reducing
the move instruction connected with the splitted Live ranges in the more
frequently code.
Thoughts please ?
It is difficult for me to understand what and how you will do this
exactly. If it is not a big work to implement this heuristic, I guess
you should try and see the result. If it works we can add it to the RA.