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

    <tr>
        <th>Summary</th>
        <td>
            [clang] a bug of simple C code "z = z + 101;" was compiled to wrong llvm-ir instruction "  %a = add i32 %a, 5"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          shawn-xc
      </td>
    </tr>
</table>

<pre>
    ```c
int test(int a, int b) {
    int z = 0;
    z = a | b >> 1;
    z = z + 101;
    z = z | 100;
    z = z - (b >> 1);
    z = z & 100;
    return z;
}
```
the above c code is very simple, compile with clang:
```bash
clang -O2 -emit-llvm toy.c -S -o toy.ll --target=riscv32
```
the toy.ll shows below:
```c
; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
define dso_local i32 @test(i32 noundef %a, i32 noundef %b) local_unnamed_addr #0 {
entry:
  %shr = ashr i32 %b, 1
  %or = or i32 %shr, %a
  %add = add i32 %or, 5
  %or1 = or i32 %add, 100
  %sub = sub i32 %or1, %shr
  %and = and i32 %sub, 100
  ret i32 %and
}
```

` %add = add i32 %or, 5` is a mistake context, clang treats a integer number `101` as a binary number `0b101`。 `5` should be corrected to `101`。
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVMFy66gS_Zr2pksphCxZXmiR2PH2Ld4HpEC0JWYQuADF1_n6KZDt-OYmM1WuUrs5fQ40hxYh6MESdVC_QL1fiTmOzndhFGdb_OpX0qlLBw1bfj2wPbBnbSNGChF4m0IBfIcpkMC3CJuXBYWIOfuBUO2RQfWQX3ICYbNDiVC9QvWK5TeQDwT-giX7YW2zw5J9R_2BBQJvH7j59gf65g8KT3H2Fj_uSdjsr8GtE8vfOBIK6d4Je-ydItQB38lfMOjpZCj1pXfTSRvCs44j9kbYAarnL2RShHFJZQAW_-NY0KRjYcz7hNFdnnos_o-Fy7ExWBRR-IEiVHuvQ_9e8R_3d60IozsHlGTc-c8NXO8Vqhc8zLaP2ll8jtEHqJ5xmkM8eTd4CgGtO3oitM5TP_uQonCxPVo327O2Cs_amGv_JpqcvwBvrbOU-p9FFB21JVTBvRnXC4O64ghrdjNUxTOZoiMCrxdv_Z7LNsu1b7O1YiL1JpTyCLxin_YjG_3lflRMhWH0i-9SkGUz2Q7LB5BbMO6OCKNPmLyZT5hQauFS6gZ0GVf_xlV-IRNKZUHGHvc1ywxL3ztXeRVN8g-y9ipr77Jhll8oPcW7nlX_buF78j8O1bBkboGTDlH8Tdg7G-lXzBbPpo2eREwIbSMN5NHOkySP0LD0fBuGIq1KbYW_PCwyuSzDawUtg5anZNYLo5uNQpnEvKc-ksLoPgnvFSvVVWpbbcWKurJp17xtyqZZjR0xqpXacKZaziTV281RKGobxreq31a00h1nvGJ1uWFl2bDmqVHVmnNJdJT1utzWsGY0CW2e0kt8cn5Y6RBm6hq-qduVEZJMuM1O3yVQIechwJoZHWL4LIs6mjxllxlQp-kn5wHd8ToscLeMEOD8m9HHOZ5FuE2T3Iezd3bALKk9ahuin5enm9D5Or9epljukvPV7E03xnhKLxz4Afhh0HGc5VPvJuCHxHr9FCfv_qI-Aj_kowfgh3z6fwIAAP__oVG-ZA">