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

    <tr>
        <th>Summary</th>
        <td>
            std::bitset optimizes incorrectly on 32-bit build
        </td>
    </tr>

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

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

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

<pre>
    Build the following on x64 with 32-bit target, optimizations enabled, and you will see the final output being "72" instead of the expected "1". Uncommenting either of the lines solves this issue.

```C++
#include <bitset>
#include <iostream>

//#pragma optimize("", off)
int main()
{
        std::bitset<128> bits("01000001010000100100001101000100010001010100011001000111010010000100100101001010010010110100110000000000000000000000000000000001");
        const std::bitset<128> mask(0xFF);
        unsigned long v[16];
        for (std::size_t i = 0; i != 16; ++i) {
                //std::cout << "v[" << (15 - i) << "] = " << ((bits >> (i * 8)) & mask).to_ulong() << "\r\n";
                v[15 - i] = (((bits >> (i * 8)) & mask).to_ulong());
        }
        std::cout << v[12] << "\r\n";
        std::cout << v[13] << "\r\n";
        std::cout << v[14] << "\r\n";
        std::cout << v[15] << "\r\n";
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVFuPqzgM_jXmxZoqF6DwwMO0nf6B1T4fBXBLdkNSkTCX8-tXIZS56JzdlQYFcrE_-4ttrLzXV0vUQHGA4pSpOQxuav5Q2iqbta5_aw6zNj2GgfDijHEv2l7RWXwtc3zRYUApHlodMKjpSgHEEd0t6FH_VEE765Gsag31UaBsj29uxhdtDHqiZFRbZdDN4TYHbClaByH2AoRAbX0g1aO7LKr0eqMuUB8VOAixwz9t58aRbIgw0mGg6a5stCWP3pln8hgG7VF7P9MO2AnY4_otWRpHEIc40qmQ2nZm7glBHlsdPAWQT78SaufDRGp8F69K52XI26Suo7pHhEBUIMQyjuguFxB1AmgbcFTaLgrrGexXPgis9qEH-Qjy8U7nyEUF8gnjPpllnMWHp5mzdU7793fdr3Ke5B8g_MMnzmmZbP_bw5dr1SDvUWR156wP-Fvqo_J_g6jY6_n8BTjbpSp7NM5e8RmKAy-hOH1UubgJQVSbca9_0o-AGkGekIE8xKXgccfLuE0Z1iBq3CILrI5jydZmqXNziLkFeYyFFr3HWtxOKl7gAyZDmxYUp8XzZ00QVbw0xvKQT_EkknrEJckRL8o1CvUuuB9zvG4qgU-mjxMURxuX8hPxJTCJzOa--pbbL3mA_Wlb_zI-C4P18v_B9_d4-U18_k188T_wWyDuHSPrG9nXslYZNbysmWT1Ps-zoVFlWfG8VrnKldzvL7zrW1KyzPesLsuyynQjmJBsLwpeiZrlu466klHbFlLyvGsV5IxGpc3OmOdx56ZrtnSupsw5qzOjWjK-SVVp6SW1tVSC2dREzEM7Xz3kzGgf_LuVoIOh5svvuPUmj9p2bpqoC-YtNvi1r7ex_WfzZJohhJuP2OV_ueowzO2ucyOIc_SxTg-3yf1FXQBxXph5EOeF-T8BAAD__z29thM">