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