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

    <tr>
        <th>Summary</th>
        <td>
            [c23] support `unsequenced/reproducible` attributes
        </td>
    </tr>

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

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

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

<pre>
    We probably want to introduce `unsequenced/reproducible` attributes to enhance C23 compatibility. This requires changes both in clang and in the libc. These attributes are similar to `const/pure` but does have subtle differences.

See 6.7.12.7 in https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf.

At libc's side, most bitwise operations would be annotated with unsequenced to allow further optimizations. Although many optimization opportunities should already be captured libcalls.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUks-OpDYQh5_GXEqDjGno7gOHzo54gY0UKTf_KbBXbpt1lRd1nj6CiZSZ415AqFz11Q9_miisCXESwx9ieG90ZZ_L9N36kl1IK5a_fW1Mdq_pL4StZKNNfMGuEwNnCIlLdtUiiFHWRPizYrLohJoLbmcpmIhilKCZSzCVkY5GTF4ni_BN9WDzc9McTIiBXy386QNBwZ81FCSwXqcVCUxmDyGBjTqtoJM7PtgjxGDs0YSEnxm6IFB4hqjLwROjtDkRCzVvtZwLmcrgMhJ4_QuBquGI4MKyYDkyUCvku5CPj-d3RBjba9up9nqQPfNGon8INQs17_ve5g3TG7Frc1mFmn-w7YSaySp1HFi7y8c5oWaXLQk1p17ex3ZzyxfQg89EQl0JKDgU6hs8MzGYwHsghLxh0RxyIthzjQ4Mgk4ps2Z0sAf28Okijuw6xrzDUgt7LJA3Ds_wz8eIFh6Rfa6rh6dOry9FyNuWC9cUOCAB-ZOmY0HtXgfV6o1rQXcurGOktnFT7-79XTc4dVd5vw1jN_SNn-x9UVoNF3cdldHm3snOukFfu-G2dNbIJkxKqovs5U1Kqfq-XZZbNyq7XMfhfh1dLy4SnzrENsZfz-MfN4Go4nS7XOTYRG0w0imxUgl3OItCqcPpMh09b6auJC4yBmL6fwoHjqf9VvVieAeqZ-rf8bmpJU5fhVgD-2pam59CzQfrv9fbVvIPtIeG54aHB2eCfwMAAP__mtcxUw">