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

Reply via email to