[LLVMdev] Converting back to SSA form

John Criswell jtcriswel at gmail.com
Tue Sep 23 09:23:17 PDT 2014


On 9/23/14, 11:14 AM, Rahman Lavaee wrote:
> Thanks John,
>
> The reason I want to do this is that register allocator works only on 
> SSA form, and if you instrument regallocated code with 
> non-regallocated machine instructions, then you cannot regallocate the 
> result.
>
> A workaround is to assign physical registers while doing the 
> instrumentation, which I don't think is as easy as the above.

Actually, it is pretty simple as long as you don't care about 
performance.  All you have to do is insert code to push the registers 
that you want to use on to the stack, use those registers in your 
instrumentation, and then restore them with pops off the stack.

Regards,

John Criswell
>
> On Tue, Sep 23, 2014 at 11:01 AM, John Criswell <jtcriswel at gmail.com 
> <mailto:jtcriswel at gmail.com>> wrote:
>
>     On 9/23/14, 10:52 AM, Rahman Lavaee wrote:
>
>         Hi,
>
>         I'm wondering how I can convert "register allocated" code back
>         to SSA form. I realized from MachineRegisterInfo.h that a
>         function leaves SSA form only once and cannot be taken back to it.
>
>
>     Are you wanting to put MachineInstr's into SSA form?  If you want
>     to do that, you'll need to implement the SSA construction
>     algorithm yourself so that it works on MachineInstrs.  Also, such
>     a pass will need to work with virtual registers as you'll need an
>     unlimited supply of temporary variables.  In essence, you'll be
>     undoing register allocation.
>
>     Can you describe why you want to put MachineInstrs into SSA form? 
>     I suspect that putting MachineIntrs back into SSA form is not what
>     you want to do.
>
>     Regards,
>
>     John Criswell
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140923/7e730443/attachment.html>


More information about the llvm-dev mailing list