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

    <tr>
        <th>Summary</th>
        <td>
            [IndVarSimplify] Miscompilation at -O3
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            loopoptim
      </td>
    </tr>

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

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

<pre>
    Reproducer: https://godbolt.org/z/zcneEahn3
```
; bin/opt -passes=indvars test.ll -S
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@g_150 = global [1 x [9 x i32]] [[9 x i32] [i32 -581671216, i32 -581671216, i32 -581671216, i32 -581671216, i32 -581671216, i32 -581671216, i32 -581671216, i32 -581671216, i32 -581671216]]
@crc32_context = global i32 -1
@crc32_tab = global [256 x i32] zeroinitializer
@.str.24 = constant [15 x i8] c"checksum = %X\0A\00"

define i32 @main() {
entry:
  call fastcc void @crc32_gentab()
  %call2 = call fastcc i32 @func_125()
  %0 = load i32, ptr @g_150, align 4
  %conv13 = sext i32 %0 to i64
  call fastcc void @transparent_crc(i64 %conv13)
  %1 = load i32, ptr @crc32_context, align 4
 call fastcc void @platform_main_end(i32 %1)
  ret i32 0
}

define fastcc void @crc32_gentab() {
entry:
  store i32 1, ptr @crc32_tab, align 4
  ret void
}

define fastcc i32 @func_125() {
entry:
  br label %for.body21

for.body21:                                       ; preds = %for.body21, %entry
  %storemerge629 = phi i8 [ -12, %entry ], [ %dec, %for.body21 ]
  %conv29 = sext i8 %storemerge629 to i16
  %conv1.i = sext i8 %storemerge629 to i16
  %add.i = add i16 %conv29, %conv1.i
  %conv55 = zext i16 %add.i to i32
  store i32 %conv55, ptr @g_150, align 4
  %dec = add i8 %storemerge629, 1
  br i1 false, label %for.body21, label %for.end234

for.end234:                                       ; preds = %for.body21
  ret i32 0
}

define fastcc void @transparent_crc(i64 %val) {
entry:
  %shr4.i = lshr i64 %val, 16
  %idxprom.i.i = and i64 %shr4.i, 1
  %arrayidx.i.i = getelementptr [256 x i32], ptr @crc32_tab, i64 0, i64 %idxprom.i.i
  %0 = load i32, ptr %arrayidx.i.i, align 4
  store i32 %0, ptr @crc32_context, align 4
  ret void
}

declare i32 @printf(ptr, ...)

define fastcc void @platform_main_end(i32 %crc) {
entry:
  %call = call i32 (ptr, ...) @printf(ptr @.str.24, i32 %crc)
  ret void
}
```
Output:
```
define fastcc i32 @func_125() {
  br label %for.body21

for.body21:                                       ; preds = %for.body21, %entry
  store i32 131048, ptr @g_150, align 4
  br i1 false, label %for.body21, label %for.end234

for.end234: ; preds = %for.body21
  ret i32 0
}
```
`store i32 131048, ptr @g_150, align 4` should be `store i32 65512, ptr @g_150, align 4`
llvm version: f819f46284f2a79790038e1f6649172789734ae8

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMV02P4ygT_jXkghxB-SP2IYd09xvpPaxG2pFWe4sw4IQdDBbgTLp__Qrb-XCmM9OzGmm3lXZMhafqKZ6isJn3am-kXKP8CQGIwE9vr18RAMpfFqwPB-vWk3FRW_G6_l12zoqeS4fSDT6E0HmUbhBsEWz3VtRWh6V1ewTbt_jPjfwfO5gUkQ0qyPQhG5Q-4VoZBFvbBZx0zHvpUfqijDgy53GQPiy1xslnRDaBub0MWLDANHu1fcAofcEIQCYtSjcy6WBFULpJYbjEIZ0P412RDZdEXW4olCjdUCiTpiTTnRlMxRleZMnnOA3gyiM41Wl55nAqi12RJb35YuxXk2hl-lOyN_0IiZ-M7Hc0JwNgr23NNEb5E8Wn-FXhE1ZpXG2Uv0TDzBYNKgWc5CUtVhRogeAZ_6csA_ExTe54CjtuTZCncJvuAKG3kwKr79YD8uKa9pt0VhkVFNPqTboRufTBLSEbcNwaH5gJw0rmEVhGHEcA_CD5F9-3k0D5nyh_Jpt4IRdNhGyUkQMvlJGWxUosEVQYrZ4Q2UgT3GusarLBmDOtccN84BwfrRL4ksRemsDqETlMRZDH2TBSvMFNgZre8B2FfA4ZK0NbJob04Rl3weFz2cQx02pvcHaJYc2RpgPKx5UevEc_weJY3Y9YB8eM75iTJuy44whKVWRXhzeU6CNKM4nvqL0XstMsNNa1u7jGO2lEDDrSped4To4pDH1h9TJT6Ifr_p5iPlg3iku_oT4A5ysa48cAj8O_K997kWuHNauljvk11i1jxwQ6urwZpxv8sb_YJjsnhT8X840TeI6GMfwk25B4K91eFpFf-oK7g8KqjLsEJxRuMThu2zjOn6JNSD79eg2Bx519qbnJ51hz5bcBY_nRYlalS_UzECbEBGBCxB-ukSdyk9PbGHk-IN6GECNk9BN9p3BXERfQB_aZkPxK5lvyEUHPsiuKG6a9jMb3SuDeLI2ANLtWxjT-JZXxk5vqYVs4Mv2gzuNSHFw2iaX9weFbzDO-aqrEqXO2Xaqzskac544urssYlXOOvSpxukzfyyC1bKUJg1jzc-LR7o7-yflmzuEHTXfO4L4mZmVEPtgWH_QXrpm7nECdUyY0CMouuAhfLpdjd3wo2nca66DhI9mGJn05nkbEPOo9H3w9es_H_yXIg_xuHvQ-9aHrw0jg1v7xBvvvdtWbsySlJCt_1DZ-aSv4B5v89hm7ID_DviDYH2yvBa4lnmGLPKfffS4Zwml9bPFROq-sieSbklZNVkCZNcBW1aoiJC0lbYoiq-gKVmW1SjMmS0Q2C7FORZVWbCHXdJVlUKWUVIvDmoJMs1KWwJt8BRUUpORQVVAA1FzQeqHWQCAnGSU0zWlWLTk0VNSUN4WURSkzlBHZMqWXkV58MVko73u5jtNLWAxC-Onlp1We27ZTmoWYA8ScEYC2trNdUO30VuTW0VdS93uPMqKVD_7qPaigh5ep_xvxB3OfVdtp1bzGh9PfZu4xCzj5lC56p9d3b1EqHPp6yW2LYBsdT19J5-xfkgcE2yEHj2A7pXFcw98BAAD__xP309M">