[LLVMdev] Finding live registers at a specific point in a MachineFunction and spilling them

Stephen Crane
Wed, 04 Sep 2013 02:20:10 -0000

On Sep 3, 2013, at 17:21 , Manuel Jacob <me at manueljacob.de>
wrote:
> The problem is to safe registers that contain gc pointers to the stack
> before a call and reload them after the call. Is there an Analysis Pass
> that computes information about which registers are live during a
> specific instruction? I looked at LiveIntervals and LiveVariables, but
> they seem to be for cases when the pass knows the register and wants to
> find the points where it is live. My code knows the point and wants to
> find the registers that are live.

I've been doing something similar using the RegisterScavenger class.
However, I'm no LLVM expert (yet), so that may not be the best way.

> Another part of the problem is to spill the registers to the stack. Do
> you think this is possible with the existing register spilling code?


I would also be interested to know if anyone has adapted the existing register
spilling code for other uses. Didn't seem very flexible to me at first
glance.

- Stephen