Hi Jeff and Vladimir. Jeff: I'd be interested in trying the patch if you can send it my way.
Vladimir: Today I have seen reasonable improvements on progressively-trimmed-down versions of a *single* test case by applying some cost adjustments in the case when an operand wants one of our bottom registers and IRA is considering giving it an alternative register or memory. I will be experimenting with different values for these two new costs and some more test cases tomorrow. I wonder if the optimal register allocator will just end up being one that tries all the algorithms and picks the best output for a given case? When it comes to optimisation, I prefer to bend the rules if at all possible! Best regards, Ian -----Original Message----- From: Jeff Law [mailto:l...@redhat.com] Sent: 16 October 2009 16:45 To: Vladimir Makarov Cc: Ian Bolton; gcc@gcc.gnu.org Subject: Re: Understanding IRA On 10/16/09 08:53, Vladimir Makarov wrote: > > The biggest problem of GCC RA is still reload pass. It frequently > changes decisions of IRA not in a good way. Agreed. Not only may reload make a bad choice, it's horribly unpredictable. Trivial changes often lead to drastically different reloading decisions which in turn drastically change the final output. One of my favorites right now is the round-robin selection of spill registers to encourage reload inheritance. While I certainly understand the reasoning behind the code, it's amazingly frustrating to watch reload choose the worst possible spill register simply because of the round-robin selection. I've got a little hack in the reload-v2 branch which queries IRA to mitigate this problem, but it's merely a short-term hack until I can make reload inheritance go away. jeff