<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">