<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63931>63931</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [FunctionAttrs] Captured argument should not be readnone/only
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jdoerfert
      </td>
    </tr>
</table>

<pre>
    The function-attars pass ignores capturing when it deduces readonly/none, which I think is wrong. I also don't understand why we even would this behavior. If we do not have it, we can actually do more than if we allow it, or at least I don't see how it could be less.

https://godbolt.org/z/75PrGYqo6

```
; Unknown could slowly reconstruct %p or %q and write it.
declare void @unknown(i1)

define i1 @bar(ptr %p, ptr %q) {
  %c = icmp eq ptr %p, %q
  call void @unknown(i1 %c)
  ret i1 %c
}
```
results in 
```
declare void @unknown(i1)

define i1 @bar(ptr readnone %p, ptr readnone %q) {
  %c = icmp eq ptr %p, %q
  call void @unknown(i1 %c)
  ret i1 %c
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVD2P6zYQ_DVUszhDor4LFXfPUOAuRVKkpMiVxPdoUiZXFpxfH1BWLk5wXZoHGJZEzuwOB8sRIejJInas_GDlORErzc5335VDP6KnZHDq0f02I4yrlaSdfRNEwgdYRAigJ-s8BpBiodVrO8E2owVNoFCtEgN4FMpZ82C8t84i499gm7Wc4QI0a_sDdIDNOzud4ALCBAfKWcZrgtUq9IGEVbDND9gQ8I4WNrcaFbkBBpzFXTt_gssY95UD6whmcUfQtLdCkMKCkLQKYx4RcXUegWZhQe8kYYzbDrjzIAgMikBw-RQSEGHeMSD35gOCwRBOLD2z9P35PxMtgeXvjPeM95NTgzN0cn5ivP-T8b4uf_W__HFz1SuJVenxe37mH_C7_WHdZo9OwbjNPMCjdDaQXyUB4-UShTJe3mA3x2uK5z3kKJRGeIS70wpYka7Pgow3OmO8fW2vcNQWQWcRNwjPeLPQXnmJbhzvN8ZbYPXHkwNxSQLLz6DldQG8wStnxx9AKYz5UsZe4lMLgEeCv1ef8urzlwZ5DKuhANrCl_v__-xxXOOc_suE18Wfwo1Edblq81Yk2GVV01ZFludFMneDzIt8TIe6TKumVqOsMxzHtG1kVWRZrRLd8ZTnaZ01aVo0ZX6qKpRctTk2IlNVWbIixavQ5mTM_RrnN9EhrNhVeZtniREDmrCHBecWN9g3GecxO3wXOW_DOgVWpEYHCv9UIU1mT5n-yJF3Ih9YeYZve3agAuGn9YqWIMz78Me7POCn-4z3MUiS1ZvuP7dN07wOJ-mujPex4_F4W7z7jpIY73edgfF-P8dfAQAA__8bcIOG">