[LLVMdev] Converting back to SSA form

Rahman Lavaee rlavaee at cs.rochester.edu
Tue Sep 23 12:31:44 PDT 2014


Dear John and Jim,
Thanks for your answers.
I agree that it is easy to do option 1 below and simple to use the stack as
John suggests, and maybe a bit more difficult when using RegisterScavenger.
However, I was just wondering maybe "Undoing the Register Allocation" has
already been done as part of some LLVM-based disassembler.

On Tue, Sep 23, 2014 at 12:23 PM, John Criswell <jtcriswel at gmail.com> wrote:

>  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>
> 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/dd1eaaf2/attachment.html>


More information about the llvm-dev mailing list