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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] Miscompilation which converts `icmp eq (trunc nsw i64 X), (trunc nsw i32 Y)` into `icmp eq (zext i32 Y), X`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            llvm:instcombine
      </td>
    </tr>

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

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

<pre>
    Reduced test case: https://alive2.llvm.org/ce/z/MLgA5x
```
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"

define i32 @src() {
entry:
  br label %for.cond

for.cond: ; preds = %if.end, %entry
  %storemerge = phi i32 [ 3, %entry ], [ %dec, %if.end ]
  %h = phi i32 [ 1, %entry ], [ %hres, %if.end ]
  %e = phi i32 [ 0, %entry ], [ -1, %if.end ]
  %tobool.not = icmp eq i32 %storemerge, 0
  br i1 %tobool.not, label %for.end9, label %for.body

for.body:                                         ; preds = %for.cond
  %cmp = icmp eq i32 %h, 5
  %conv1 = zext i1 %cmp to i64
 %conv2 = sext i32 %e to i64
  %cond.i = call i64 @llvm.umax.i64(i64 %conv1, i64 %conv2)
  %conv3 = trunc nsw i64 %cond.i to i16
  %conv4 = trunc nsw i32 %e to i16
  %sub.i = sub i16 %conv3, %conv4
 %tobool6.not = icmp eq i16 %sub.i, 0
  br i1 %tobool6.not, label %if.end, label %if.then

if.then:                                          ; preds = %for.body
  br label %if.end

if.end: ; preds = %if.then, %for.body
  %hres = phi i32 [ 0, %if.then ], [ %h, %for.body ]
  %dec = add nsw i32 %storemerge, -1
  br label %for.cond

for.end9:                                         ; preds = %for.cond
  ret i32 %h
}

define i32 @tgt() {
entry:
  br label %for.cond

for.cond: ; preds = %if.end, %entry
  %storemerge = phi i32 [ 3, %entry ], [ %dec, %if.end ]
  %h = phi i32 [ 1, %entry ], [ %hres, %if.end ]
  %e = phi i32 [ 0, %entry ], [ -1, %if.end ]
  %tobool.not = icmp eq i32 %storemerge, 0
  br i1 %tobool.not, label %for.end9, label %for.body

for.body:                                         ; preds = %for.cond
  %cmp = icmp eq i32 %h, 5
  %conv1 = zext i1 %cmp to i64
 %conv2 = sext i32 %e to i64
  %cond.i = call i64 @llvm.umax.i64(i64 %conv1, i64 %conv2)
  %0 = zext i32 %e to i64
  %tobool6.not = icmp eq i64 %cond.i, %0
  br i1 %tobool6.not, label %if.end, label %if.then

if.then:                                          ; preds = %for.body
  br label %if.end

if.end: ; preds = %if.then, %for.body
  %hres = phi i32 [ 0, %if.then ], [ %h, %for.body ]
  %dec = add nsw i32 %storemerge, -1
  br label %for.cond

for.end9:                                         ; preds = %for.cond
  ret i32 %h
}
```

llvm version: de9b386f84b58ad0ffc12e221bc6d9161ca5b62d
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV8GO4jgTfhpzsYLiMnbIgQPdCOmX_rnsXmZOq8QuiHcTh42dbrqffmUnDQkMrR1pj42QictVX5XL9RVx4Zw5WsQNEU8EQHt1fn97JQBE7BZF76u224zCRdnqt81vqHuFmnp0nqrCIeFbWnl_coRvCewJ7IvavCAs6_qlWbbdkcBeIYH9O4H9t_8ft-JM0h1Jt0Sm4zdOfdEd0VNd-KIu3treU8J3lABg0hC-xeQEWUr4lkMcwpTNp-FJruKQmMsDgzXhWwbr5LBOxycbRfLDXK6S34MawCwU35lTjR9hnNfyD7lKevuXbV9tUhvbn5Oj7S9Ww6jxYCxSw4GSVeo6RQJwTkn2NCig9d1byFWcUVp2tC5KrCkBcWi7pWqtngJeZHxLCX-ipw61G4MS5rBEqwk8h8mAPMISEM63HTbYHYc9nCozhCWeKJ-aUCJ2cS6egkyjGlcH9Lh8Ra3uwNgnYFWH7jO0-9DSR2gJ-wzIt2Xb1kvbDnVjVHOi-PeAOk1FwEgnuTdsbh3WZ-eBVud3wkCF20OKMr6l__Zzd5jz04-7Crv4yXaqEJCY6rX2hUXNdzz7cVPBxrc0UGHQHBUhKrqoOODhXG9U1EsTNVVR12E1FHQkdd8U52VQh3UUj_5DUJM5EMhvQuQRz3e9VdS614l28BViYPLGZHVrMo14pu36cgzY9WVYu3gd6ybCXVMxnLm8L5nBMsJ9Vi3yrlyubJyKfIV2Wisfol8olZ_XyrUI511kDGPuEh93kBjNkKJb2JHBD0k6Wt-S_gbthqoaVQQstJ4e6ZyjCfuVBhlJ-l9yr0N_JdvgLNs97vP-6L_6_Fef_-rzINJJeA-9Puy90z-EsQy--u9X_5313_m9YRhDvdIX7Jxp48lqzEu-lof1qhTrQqeHg2KAAKxUUudMMlWIUoJe6A3XOc-LBW5YxlY5cM7lotrITJaYZ5hnxUFopuUhz7gQUpdKKs3ShdlACqtUpIIJLrhcZoWGNGO5WmHGsvJAVik2hakvF6GFca7HTc4YZIuYUjdeuxrjVNucTF34ED8AgWcCEAwJ3xrrvGqb0lgcL2bdJiwlZX90gavGeXf14o2v433uf9b559FO7Oi3mRP6WhlV0UBg7LyjRKYfJCSwnr-ifQ8MjyW1nr-I_QgLMqXG-vYG4dIAfozG34lMF31Xb-aXxaPxVV8uVdsQ2McNDz_JqWv_ROUJ7GPaHIF9zNw_AQAA__8-l_bx">