[llvm-dev] Return on nocapture pointer

Sanjoy Das via llvm-dev llvm-dev at lists.llvm.org
Fri Apr 28 09:45:32 PDT 2017


Hi Piotr,

On Fri, Apr 28, 2017 at 9:18 AM, Piotr Padlewski via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> Thanks guys.
> Do you it make sense to extend the definition in LangRef?

If you're asking if it makes sense to allow nocapture on returned
arguments, then I don't think it make sense.  Right now we assume a
pointer that only has nocapture uses is not captured.  That will not
be true with the spec change you're proposing.

-- Sanjoy

> If so I will be
> happy to upload a patch.
>
> Piotr
>
> 2017-04-28 17:58 GMT+02:00 Hal Finkel <hfinkel at anl.gov>:
>>
>>
>>
>> On 04/28/2017 10:22 AM, Piotr Padlewski via llvm-dev 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:
>>
>>
>> Yes, it includes returning the pointer. The code below is invalid. The
>> return value outlives the callee itself.
>>
>>
>> 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)
>>
>>
>> Correct.
>>
>>  -Hal
>>
>>
>> Piotr
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>> --
>> Hal Finkel
>> Lead, Compiler Technology and Programming Languages
>> Leadership Computing Facility
>> Argonne National Laboratory
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>


More information about the llvm-dev mailing list