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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] Miscompile at -O1
        </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://godbolt.org/z/z1a3665hd
```
#include <stdio.h>
#include <stdint.h>
static uint16_t
(safe_lshift_func_uint16_t_u_s)(uint16_t left, int right )
{
  return
    ((((int)right) < 0) || (((int)right) >= 32) || (left > ((65535) >> ((int)right)))) ?
    ((left)) :
    (left << ((int)right));
}
static int16_t
(safe_unary_minus_func_int16_t_s)(int16_t si )
{
 return
    -si;
}
static int32_t
(safe_lshift_func_int32_t_s_u)(int32_t left, unsigned int right )
{
  return
    ((left < 0) || (((unsigned int)right) >= 32) || (left > ((2147483647) >> ((unsigned int)right)))) ?
    ((left)) :
 (left << ((unsigned int)right));
}
long smin(long d, long p) { return d < p ? d : p; }
struct e { uint32_t f; } static g[] = {1, 36};
int64_t h, i;
uint8_t j(uint64_t m) {
  if (safe_lshift_func_uint16_t_u_s(
 smin(m, safe_unary_minus_func_int16_t_s(
 safe_lshift_func_int32_t_s_u(1, g[1].f))),
          3))
     h = 0;
  return m;
}
int8_t k() {
  j(0);
  struct e *l[] = {&g[1], &g[1], &g[1], &g[1], &g[1],
                   &g[1], &g[1], &g[1], &g[1]};
  return i;
}
int main() {
  printf("%d\n", k());
  return 0;
}
```

```
> gcc -O0 -fsanitize=address,undefined -w test.c && ./a.out
0
> clang -O3 -w test.c && ./a.out
; no output
```

Reduced LLVM IR: https://alive2.llvm.org/ce/z/hWuhFG
```
%struct.e = type { i32 }

@g = internal global [2 x %struct.e] [%struct.e { i32 1 }, %struct.e { i32 36 }], align 4
@h = dso_local local_unnamed_addr global i64 0, align 8
@i = dso_local local_unnamed_addr global i64 0, align 8

define i8 @src() {
entry:
  %0 = load i32, ptr getelementptr inbounds ([2 x %struct.e], ptr @g, i64 0, i64 1), align 4
  %or.cond.i.i = icmp ult i32 %0, 31
  %shl.i.neg.i = shl nsw i32 -1, %0
  %.neg.i = zext i32 %shl.i.neg.i to i64
  %sext.i = shl i64 %.neg.i, 48
  %1 = ashr exact i64 %sext.i, 48
  %2 = call i64 @llvm.smin.i64(i64 %1, i64 0)
  %3 = and i64 %2, 65535
  %tobool.not9.i1 = icmp eq i64 %3, 0
 %tobool.not9.i = and i1 %or.cond.i.i, %tobool.not9.i1
  br i1 %tobool.not9.i, label %j.exit, label %if.then.i

if.then.i:
  store i64 0, ptr @h, align 8
  br label %j.exit

j.exit:
  %4 = load i64, ptr @i, align 8
  %conv = trunc i64 %4 to i8
  ret i8 %conv
}

==>

define i8 @tgt() {
  ret i8 poison
}
```

cc @nikic 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykV9-PmzgQ_mucFysIbCDkIQ_5sTlValWpD3ePyBgDbo2dw6bd3b_-ZGMIJNnttV3RFOyZb8bfN_YA0ZrXkrEdSA4AodLQ59eXHwAhkJxWpDeN6nZ-cFWo8mX3hZU9ZSU0TBtIiWYA72FjzEUDvAfoDNC5VmWhhAlUVwN0frX_IoLTNGlKEJ5AuAdp6K_hEWEuqehLBgE-alNyFTQAP701K81sWhtiOIU9lyZKczP6ZJpULBe64ZXJq17SfLTI-1wDtAUoG0egYJUB6Ai5NLDjdWOgNRiQNofhBsKOmb6T4xOEAGXTxaUBaOt8AdraRGHobjZHsDnCt-2eAD5BjJa2Nh875_3SJMHJZD6OLqGmCwJ8vs1xWJ-f3S9mfaijzfgtXHwYuTgtOH9IeS9J95K3XPZ64H2k3ZM-cq75I5JvOV5r_l54jN5T3BvkOu-n2HZg0ruXrvjL3xJ-ZO6x0HPoX1ccRfEmznAab-5kfwP41_V_KP476HcyCCVrqFsuLZK9Ly2n7u4yrO7gqYOlI-pic3P3e3gB-ABninY9NZA5n36UqfI20Ate2zMqOUFLINgcIhsOpxZkzI1Lk8a5gY3bzdOwRcxyA7_6Te9sWp_jSBav4M-Pjcxb-2W3Ns5Py35yerdAM7ceu8YIJKegmol6vAo6_GE_cx1uHCvhtOSxamF7L5xn45uTfMGBJSiciw3hVRq0F0sBAErHdG3qf_B4u77p77cxZ0UxUfHgKLEbvyVOyxsqLh2XpnLjCKCkBMlRutvjSNySJx8jvI9x2-0eDuInWFMK159DuK40kdzwVwbwiZRlx7QG6NjLklXc7s31D9d9A2pXDFAKA4DOJFC9PwtnmFQQWcP1Z_xTJ7vXpIKqN5dp6FHiY___-PHvT_DDl_vuTwT_zlAgxPfWvwFQ5l8Dmn_65vzXG-8AyVBpAXPlZV4uw2nAMbqeE_43DmtnxKVhnSQC1kIVRECQHBB8hjMsV632zWaG7kEjB-vK5n4Sp252qCsieC1hPAUf9lqpVS4UJQK637yXkrSszK1iY0I8jW17GCGyCYL_KYT7HQoC8gyCONQdva1iJk33Muv4ACWhCywUKe06Le7FdLBmhgnWMmnsE5eF6mWpXU94ROnoZoVwJ-2Yo72JhiNryZqLrbqAKlkGPBiWz2l7gb0wg8YocRA4mnnoRgQ8kKz2HroRUOofzmEdefHCmcPM9pU9T8hzHKNsmvMg7NnM8O0aJiQbIs5mxpGzI7rpIHsm1IzmA8idOXLmlAiPG4duX9j2EdgsUOb9oxmP2xkAHuLJcgzkNBveCK9WRhVKiUAqsw14dCWX_Tu6YesWTq1_6XGNEd3o5Cle4o-Bi847LKbdSwApmLAzXwP2zM1iiFeBaZgM-LySr4PXatVGdexaW77gmru94BK5jTjD9iOLbRDPtoGVYYLnD-ABSqiS34dzqeslHUmNXTFlsxbg9uJgftsF_Cl7ctfTm9vY1Oa-GXnki-Jayf_TXii1WJJ_4xSuyh0ut3hLVmwXbaIwDTGK4lWzI0mWFTQJy5RGJMuipIoIK6uKVEmBSElWfIdCFIc4SqMEYxwHBQljtCEVS-IqTrYFiEPWEi6m037Fte7ZLksSnK6cJtp_WbZcU9VeuCCGK99JAULWEeA9l9pQ1RZcMv_t2e3s1Lroa213DddGX6MYboT7ZP0gtTl6v-QEP41BGCQGrj9Hq74Tu5uvU26avgioagE6u_DDf-tLp74yagA6u0VogM5uHf8FAAD__1KNHCw">