[llvm-dev] Return on nocapture pointer

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Fri Apr 28 08:58:04 PDT 2017


I believe it is invalid. It's making a copy that outlives the call. I don't
think functionattrs will infer this, for example.

On Fri, Apr 28, 2017 at 8:22 AM, Piotr Padlewski via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
> I have a question about semantics of nocapture attribute:
> "This indicates that the callee does not make any copies of the pointer
> that outlive the callee itself. "
> Is returing a pointer considered outliving callee? For example is this
> code valid:
>
> define i8* @foo(i8* nocapture %p)
>   ret i8* %p
> }
>
> The documentation also mention that " This is not a valid attribute for
> return values.", but I interpret that it is is about this case:
>
> declare i8* nocapture @bar(i8* %p)
>
> Piotr
>
> _______________________________________________
> 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/20170428/cafdb5b9/attachment.html>


More information about the llvm-dev mailing list