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

    <tr>
        <th>Summary</th>
        <td>
            Let big shift return poison lead to diff result for O0 and O2
        </td>
    </tr>

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

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

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

<pre>
    https://godbolt.org/z/9W71xdhnq

```
#include<stdio.h>

int main() {
        unsigned long long xM0;
        unsigned long long xM1;

        xM0 = ( 4294967295ULL );
        xM1 = ( ( 1ULL + 1ULL ) );
        xM0 >>= ( xM1 + 4294967295ULL );

        printf("%llu\n", xM0);
        return 0;
}
```

`4294967295ULL = 0xffffffff`

`xM1 + 4294967295ULL = 4294967297ULL = 0x100000001`

and in x86-64 `shr` or arm `lsr` , the 

> is a register holding a shift value to apply to the value in Rm. Only the least significant byte is used.

`64 = 2 ^ 6` , so `0x100000001 => 0x1`, 
and the right output should be `4294967295 >> 1 = 2147483647`.

And when apply `O2`, the output is `140735712106328`.

Ahead, the diff `O0` and `O2` caused by `EarlyCSEPass` for `ConstantFold`, see below:

https://github.com/llvm/llvm-project/blob/b027ce0ab93060bc6cb79d5402d21520e8b93fb7/llvm/lib/IR/ConstantFold.cpp#L1102C1-L1105C75

-- 

Can we fix it by trunc the `C2` to the width value bits like arm assemble’ behavior? 


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVVGP4yYQ_jXkZbQRBoPNQx5unViqtKutrqr6DAbH9AikBu9m--srHOc2yd61RYmxh-Gbb4bPYxmj3XtjNog9IrZdySkNYdwMMX2jeKWCft8MKR0jol8QaRFp90Gr4NI6jHtE2r8RacUfVXHSg_8L4S3CX5Yrx8vv_Eio9Z2btEG0iUnbsB4Q3V3vsD7BQVqPSI2IAFQ9nu2wjMnPTDW44Pfny-kZI_p_3IrvbrfOp2cMiG4BkRpKIkrBKyLY709PgIj4BH16Lr57539xdny83Iif7MoxdvPvvHfGIY__EvEW4Than_q5LgQR5tyEWOPnh2auwQ-ijiZNo4eP-qBq--OTuRjv2NAt4FO_jM_eP8mBbj8s1QdOgc-juAOSXoP1cKr5Ay8BcRyHEXEMYQQ5HrLBxdmQM02DgRsWdAc2goTR7G1MZoQhOG39HiTEwfYJXqWbDKQA8nh07_kmY5yt1sPXwxpefF4YDDgjY4KsHdvbTvoE6j2ZHGCKRq_v0s9s6RYIILYDfmEYQ6Z8lW52yjTxac5816LHBtUNfGSfQ492PyQIUzpOCeIQJqdBGbg5k0VCcFYgKcqqrCkvK8TxDbcvXsPbYPySMuL4heTQS_2WIDbmlaLEFWVVQQrMKak_QQ1G6stGbft-RsvKgcz8Ag2dzBUCNUfbydG9N7_tfpUx5sU-jNncBB-T9KkNTi90ojGgjAtvubVchb1rNzYNk1p34YBI69zrZXo4juFP0yVEWuWCyhMmVWewVIJijlXHO1UJzUpMNCkYwaZWgvaqusKxed8vXxFpr_mtu-MREfpUFJg0xUOeWVOxa44PDzdKbKSHNwO9PYHNuoE0Tr47C5bjZq7SIr43q9OwSFDZFMHZb2YWu4zRHJQzaEdQjZEQoMwgX20YEW1vwq30hmpBhVyZTcEFFaLEZbkaNp3QjPeaKsxxWbJa0ZpWipmCqZrznq3shmBCscAcC1bicq0473VJ64zHdFWjEpuDtG6dS5R7_MrGOJkNZyUTKyeVcXH-VBDizRvMi7kRse1q3MznoqZ9RCV2Nqb4gZJscmbzZBIou1_ezqVFHYONwef3T-cizUIbTZxcmsXzclbbC1lNo7v_Fv23OGaGEZF2zuCfAAAA__8j0elG">