Interprocedural register allocation. Status?

There was a GSoC project in 2016, final report at

Google doesn’t show a lot of activity since. Has anyone taken this work further / put it near production? I’m interested in removing register spills around functions that are known to not clobber said registers.



Hi, Jon,

I believe that the status is that it works, although there are some outstanding issues around conditionally-reserved registers on some targets, please see for some discussion of the outstanding issues.


Hi Jon,
I was looking at IPRA a while ago and then got pulled into other things. I completely missed Jonas’ questions on llvm-dev. Thanks Hal for pointing this out. I’ll take a look at this thread when I’m back at my laptop.

I have one patch posted to fix a functional bug I found on PPC. Aside from that, I believe IPRA was functionally clean on PPC, but I need to do another round of testing to confirm. I also need to do another round of performance tests to make sure it doesn’t cause any performance regressions before enabling it.