[llvm-dev] LLVM IR temporary variable reuse

mats petersson via llvm-dev llvm-dev at lists.llvm.org
Fri Mar 18 01:09:06 PDT 2016


On 18 March 2016 at 06:31, Ansar K.A. via llvm-dev <llvm-dev at lists.llvm.org>
wrote:

> I meant LLVM registers. Thanks for the correcting me.
>

But registers in LLVM-IR are in infinite supply, since the are virtual
registers. Real registers appear when the IR is translated to machine
instructions, and this is based on the live-range of the actual variables,
so the same register will be re-used within the machine code. Reusing a
virtual register is BAD because it will confuse the IR into thinking that
your code is using the same thing for longer, and thus, potentially, make
it use the same hardware register when two different ones could have been
used.

Can you please explain what it is you want to achieve, as a bigger picture?
Ideally with some example of some source, its generated IR and how you want
it to be different?

--
Mats

>
> On 18 March 2016 at 10:42, David Blaikie <dblaikie at gmail.com> wrote:
>
>> Question is hard to understand - the registers in LLVM are in Static
>> Single Assignment form
>> <https://en.wikipedia.org/wiki/Static_single_assignment_form>, they're
>> not variables that can be assigned and reassigned values (so the answer to
>> your question is probably "no"). It's best to look at what Clang does to
>> see how IR can be used to represent constructs in C you may be more
>> familiar with.
>>
>> On Thu, Mar 17, 2016 at 10:05 PM, Ansar K.A. via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> In any case, Is there any chance for reusing *temporary variable *used
>>> in it's IR by LLVM ?
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>>
>>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160318/f204e723/attachment.html>


More information about the llvm-dev mailing list