[llvm-dev] Well-formed @llvm.lifetime.start and @llvm.lifetime.end intrinsics

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Thu Mar 30 16:21:16 PDT 2017


It's useful to think about lifetime.start/end as being equivalent to a
memset of undef. They effectively clobber what was there and reinitialize
it with "nothing". If you transform lifetime.start in a way that would be
incorrect if it were storing undef, then that transform is incorrect.

On Thu, Mar 30, 2017 at 4:16 PM, Daniel Berlin via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Interesting.
> They are marked this way specifically to prevent things from moving them
> this way, and it blocks other optimization. So if we are ignoring it to
> move them, it seems either "they shouldn't be moved", or "we shouldn't
>  mark them" :P
>
>
> Thinking harder about this.
> if you transformed
>
> lifetime.start(%p)
> use %p
> lifetime.end(%p)
> into
>
> if (c)
>   lifetime.start(%p)
> use %p
> lifetime.end(%p)
>
> That is *definitely* a bug in polly.
> Stack coloring should be able to handle it if that is the original IR but
> that is definitely not a legal transform of the lifetime.start.
>
>
>
> On Thu, Mar 30, 2017 at 4:09 PM, Michael Kruse <llvmdev at meinersbur.de>
> wrote:
>
>> 2017-03-31 0:54 GMT+02:00 Daniel Berlin <dberlin at dberlin.org>:
>> > I'm curious, btw, what made it think the above is legal.
>> > The intrinsics are marked as touching memory, having side effects, etc.
>>
>> The precedes my involvement with Polly.
>>
>> Polly has a list of intrinsics that can be safely ignored, e.g.
>> llvm.dbg.value/llvm.gbg.declare. The lifetime markers are also in this
>> list. Ignored intrinsic are ... well ... ignored when generating the
>> optimized code.
>>
>> Michael
>>
>
>
> _______________________________________________
> 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/20170330/e4cc9c84/attachment.html>


More information about the llvm-dev mailing list