<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">