This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Allocating some Loop allocno in memory

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]