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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] Miscompilation with llvm.assume in unreachable blocks
        </td>
    </tr>

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

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

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

<pre>
    Reproducer: https://alive2.llvm.org/ce/z/zKvpXV
```
; bin/opt -passes=instcombine reduced.ll -S
define i16 @src(i16 %g, ptr %e, ptr %d) {
entry:
  %0 = load i64, ptr %d, align 8
  %conv = trunc i64 %0 to i16
 %tobool.not.i = icmp eq i16 %g, 0
  br i1 %tobool.not.i, label %i.exit, label %for.cond.preheader.i

for.cond.preheader.i:
  %cmp5.i = icmp ne i16 %g, %conv
  %conv6.i = zext i1 %cmp5.i to i32
  store i32 %conv6.i, ptr %e, align 4
  %cmp7.i = icmp eq i64 %0, 1
  call void @llvm.assume(i1 %cmp7.i)
  unreachable

i.exit:
  ret i16 %conv
}
```
```
define i16 @tgt(i16 %g, ptr %e, ptr %d) {
entry:
  %tobool.not.i = icmp eq i16 %g, 0
  br i1 %tobool.not.i, label %i.exit, label %for.cond.preheader.i

for.cond.preheader.i: ; preds = %entry
  unreachable

i.exit: ; preds = %entry
  ret i16 1
}
```

llvm version: a8e1c3e1239604ac787b6a2d39b5278ddec8aa8a

cc @nikic
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVcuO6zYM_Rp5I4xhU34uvJhJYKAoummBols9mES9suVKcu7MfH0hx2ns4ALTRRcFEscSeajDQ4rh3uvziNiR8o2Ux4TP4WJdp4J8__z4ngirPrpfcXJWzRIdYa_0EsLkCXsl0BPoudFXhNSY65BadybQSyTQf8bvz9fpj99JdiTZK6my9XNbsjcq9Eigt1OgLxP3Hj1hRz36IO0g9IjUYTxSpcbQl99uMIWnaNF5RUmReScJNMsCyjOBA52Ci--4eVcEWkrqt1sAHIP7iNyXFY0OGSXsSI3liuqq2CMPlBt9Hmmz8Zd2vC6Q4OZRRswtSrCR1-pIoAxWWGvS0YZUL_5aDhPFv-iWcHYPLBzV-TMsehgu0ESDTvFdh93WybpU2lGlk8MLcoUu1au-y_OH9l3ycpjKLb27uCu9Nd2n7KsV8YnvYWW9xokaMLi7-2Adxo0N8LlKN32LPaX6WbFV4wjI766SG0OvVqvYCkv7ce_nAZeWeAQi0N4R8-iQywsXBrcqrcI-dHEY7io8sif18cedvF_uOzScw3_Qof_fTqLxHk8OlV94xcQW-v9S8C_g9zrkX1RgecYOoFd0XtsxhuYN5pJhDqytsoLLuqlFxUGxVpRQN0qhbDhv-DaGlLFoo_6mZaI6plrW8gS7vM7bpiyLEpJLxyqoK8HbTLJaFE1zyk5wargQjGdwkkWiO8igyOosz2tWM0irqmngBC1nWLctACkyHLg2_8zMRHs_Y9fWjGXJUhK_TGOAQXtph0kbHmJaAAQOBCACCXvdDMtoKo-J66LpRcxnHy-F9sE_Tgk6mGXM_zT6cFhx5ZH-sjuEftfhQjf3iepxW0gqjJXffDI70-3_Cc46XGaRSjsQ6BeKt5-Xydk_UQYC_ZKoJ9Dfcr128HcAAAD__1QR4DM">