<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63291>63291</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Attributor] `memory(argmem)` + unknown access should not become `readnone`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
jdoerfert
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
jdoerfert
</td>
</tr>
</table>
<pre>
The initial argmem annotation plus an unknown access causes a `memory(none)` deduction due to some faulty bit fiddling.
https://godbolt.org/z/v4cvE1dG6
Run attributor on the following:
```
declare ptr @unknown(ptr %arg) memory(none)
define void @square(i1 %c, ptr %arg) memory(argmem: readwrite) {
br i1 %c, label %t, label %f
t:
%p = call ptr @unknown(ptr %arg)
store i32 0, ptr %p
br label %f
f:
ret void
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEU92OmzwQfZrhZrSRMcTABRfZLx-9r_oCBg_grbFT_yTaPn0FQbvZbatKCDTGc2bOzDkyBD1ZohaOz8D5i3LkR_IROIfjOZMpzs63b8dZ79Rr-20m1FZHLQ1KPy20oLTWRRm1s3gxKaC0mOx3624W5TBQCDjIFCigRBBsocX5V-C1dZaANyAYKlJp2ABUIowOg1sIR5lMfMVeRxy1Ukbb6QDsDOx0f88xXgIUJ-Ad8G5yqncmHpyfgHc_gXfXcrj-n6sv4jHpa7IoY_S6T9F5dBbjTDg6Y9xN22mFu98WbH-2UNFgpCe8RI9Qsp0f8Ho74Ee5Vm3wN3IPlRWN2hJenVYrRPiRpCfgtc5XgAH4f_gXsPucoTihJ6luXscVG6F6viMjIvYeH4CM7MmsUfwQjff78Y3lmgn8eEEozjhIY_5B8D0rROcJdcGRPXR--dDQ57rje11PcZvEPqDq_MepZ6otVFM0MqM2F7UQDauaKpvbUVBZCtUXnMqx7iUbBlEplqucjUdRNpluOeMFE3nB87zIq0PZMCZEXSpiou5VBSWjRWpzMOa6rKLJdAiJWlHwJs-2zsNuDEs33H7uxvDtmvPUpylAyYwOMbyjRB3N5qjTm8jgeP4g_H2dd-kDf_7sljC7ZBRaF7GnYXUCCLZufhOVYFnypv0kfh3n1B8GtwDv1l72z9PFuxcaIvBuYxCAdxvDXwEAAP__QAs1TQ">