[Attributor][Fix] Manifest nocapture only in CSArgument or Argument
authorHideto Ueno <uenoku.tokotoko@gmail.com>
Wed, 11 Sep 2019 06:52:11 +0000 (06:52 +0000)
committerHideto Ueno <uenoku.tokotoko@gmail.com>
Wed, 11 Sep 2019 06:52:11 +0000 (06:52 +0000)
commit37367646578735c1bd453f959dd7696e2a41d621
treeb1a24f7c740a5d869574cdcbf6eeeed3a25b94d0
parent2aace1ea226eb0517f48890066c7851c8f03e3c8
[Attributor][Fix] Manifest nocapture only in CSArgument or Argument

Summary:
We can query to Attributor whether the value is captured in the scope or not on the following way:

```
    const auto & NoCapAA = A.getAAFor<AANoCapture>(*this, IRPosition::value(V));
```
And if V is CallSiteReturned then `getDeducedAttribute` will add `nocatpure` to the callsite returned value. It is not valid.
This patch checks the position is an argument or call site argument.

This is tested in D67286.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D67342

llvm-svn: 371589
llvm/lib/Transforms/IPO/Attributor.cpp