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

    <tr>
        <th>Summary</th>
        <td>
            Clang 16.0.0 incorrectly eliminates fetch_or on a atomic that was qualified with volatile
        </td>
    </tr>

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

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

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

<pre>
    Reproducer: https://godbolt.org/z/G93dhsdMa

We can see that GCC 13.1 keeps the lock or, whereas Clang doesn't.



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxckb-O2zwQxJ-GahYnUEv9LVj480FXfU2alMGKXJvMUaJCUmdcnj6wHSBBmtlisYOZ31LO_roxa9H9J7rXio7iYtKJdkccsqmWaD_1F95TtIfhJNQJXCl7FuokcBY4X6NdYih1TFeB80-B89ukrMv2fxLyVcjTU78yGNogM0NxVODtfIZG1Q28M-8ZimMI0bxDTALPcHOcmDKcA21XsJHzJnAo9d-OT62sVnZSE1Wsm34cu7FB1VZO983UXnpq1YKXobNEiNPE2Mh-snIcVOU1SlRykF0zolRt3bAkg0PL49hNZhxEK3klH-oQPtZ7v8rnfLDuVT9hFWjhkB_cEDe-wWMpEO8Yk77fvCzHNYtWBp9L_uNSfAmsn9Wavpa1BL-ZmBKbEj6Bg1_9RoUzXLgY9y0miBsQUImrN098N8rw46DgL54t3Hxx8BEDFR-4OlLQ__zIF3cstYmrwPme4_d42VP8zqYInB_ps8D50e5XAAAA___NlakR">