Allocating some Loop allocno in memory
Ajit Kumar Agarwal
ajit.kumar.agarwal@xilinx.com
Sun Jan 11 04:26:00 GMT 2015
I was thinking of some of the opportunities with respect to reducing spills inside the Loop. If the Live range(allocno)
spans through the Loop and Live out at the exit of the Loop and there are no references or not being touched upon
inside the Loop, assign the allocno to the memory. This increase the chances of getting the register for other allocno
which spans through the Loop and have reference inside the Loop if the interference graph is not colorable.
Since allocno don't have references inside the Loop there won't be any load instructions with respect to restore inside
the loops. There will be a store instruction with respect to spill which will be outside the Loop. This will reduce the
conflicting edges of some of the allocno increasing the chances of making colorable of the Interference graph and
reduces the spills and restore inside the Loop.
This heuristics looks reasonable. This heuristics goes side by side with the Live range splitting across the Loop boundary.
On top of this heuristics, after the Live range splitting across the Loop boundary there interference graph is not colorable
then we can assign some of the splitted live ranges in the memory giving chances of registers for the Live ranges(allocno)
that spans the Loop and have reference inside the Loop.
We can change the cost of allocno in memory based on the above heuristics and take the above factor into consideration
for the cost calculation.
Thoughts Please?
Thanks & Regards
Ajit
More information about the Gcc
mailing list