[PATCH] D92808: [ObjC][ARC] Use operand bundle 'clang.arc.rv' instead of explicitly emitting retainRV or claimRV calls in the IR

Akira Hatanaka via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 11 11:50:31 PST 2021


ahatanak marked 3 inline comments as done.
ahatanak added a comment.

In D92808#2557634 <https://reviews.llvm.org/D92808#2557634>, @dexonsmith wrote:

> In D92808#2555868 <https://reviews.llvm.org/D92808#2555868>, @ahatanak wrote:
>
>> For example, if SCCP just does a normal RAUW on the following call, which is taken from the example I posted,
>>
>>   %r = call i8* @foo() [ "clang.arc.rv"(i64 1, i8* %r) ]
>>
>> will become
>>
>>   %r = call i8* @foo() [ "clang.arc.rv"(i64 1, i8* @g0) ]
>>
>> `%r` doesn't have an explicit use in the IR anymore, so passes like deadargelim can change the return type of the function to `void`.
>
> Is that a problem? It seems like this keeps all the information ARC needs. This could be lowered to:
>
>   call void @foo()
>   call @unsafeClaimAutoreleasedReturnValue(i8* @g0)
>
> The ARC optimizer and ARC lowering both need to know about this case, but I don't see why deadargelim needs to know anything special.

I see, you are right.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92808/new/

https://reviews.llvm.org/D92808



More information about the llvm-commits mailing list