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

    <tr>
        <th>Summary</th>
        <td>
            Dead Code Elimination Regression (trunk vs 16) 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    https://godbolt.org/z/9hs4cseqd

Given the following code:

```C
void foo(void);
static int g, h = 5;
static short(a)(short b, short) { return b; }
static short(c)(short b, short) {
    if (!(((b) >= 1) && ((b) <= 23))) {
 __builtin_unreachable();
    }
    return 0;
}
static short(d)(short e, int f) { return f >= e > f ? 0 : e << f; }
static void i(char j, int k) {
    c(g, 0);
    if (d(0 == j, j)) {
    l:
 if (a(k, j || c(0, 0))) foo();
        goto l;
    }
    h &= 3;
}
int main() {
    g = 23;
    for (; g; g--) i(g, g);
}

```
clang-trunk -O3 does not eliminate the call to foo:

```asm
main:                                   # @main
# %bb.0:
        pushq   %rax
        movl    h(%rip), %eax
        andl    $3, %eax
        movl    $23, %edx
        movl    $385875968, %esi                # imm = 0x17000000
        jmp     .LBB0_1
        .p2align        4, 0x90
.LBB0_6: #   in Loop: Header=BB0_1 Depth=1
        movl    %eax, h(%rip)
        addl    $-16777216, %esi                # imm = 0xFF000000
        decl    %edx
        je      .LBB0_7
.LBB0_1: # =>This Inner Loop Header: Depth=1
        movl    %esi, %ecx
        sarl    $24, %ecx
        xorl    %edi, %edi
        testb   %dl, %dl
        sete    %dil
        xorl    %r9d, %r9d
        cmpl    %edi, %ecx
        setge   %r9b
        movl    $65535, %r8d                    # imm = 0xFFFF
        shrl    %cl, %r8d
        cmpl    %r9d, %ecx
        jl      .LBB0_6
# %bb.2:                                #   in Loop: Header=BB0_1 Depth=1
        andl    %edi, %r8d
        je      .LBB0_6
# %bb.3:
        testl   %edx, %edx
        je      .LBB0_4
        .p2align        4, 0x90
.LBB0_5: # =>This Inner Loop Header: Depth=1
        callq   foo@PLT
        jmp     .LBB0_5
        .p2align        4, 0x90
.LBB0_4:                                # =>This Inner Loop Header: Depth=1
        jmp     .LBB0_4
.LBB0_7:
        xorl    %eax, %eax
        popq    %rcx
        retq
.Lfunc_end0:
```

clang-16.0.6 -O3 eliminates the call to foo:

```asm
main: # @main
# %bb.0:
        andl    $3, h(%rip)
        xorl    %eax, %eax
        retq
.Lfunc_end0:
```

Bisects to 0659000ff79decc1173aac140d4b0325fe696c57 (@nikic)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycV1-P4yYQ_zTkZZQIA_73kIdNcmkrndSquvcVNthml5icIXvbfvoKHHvZJHvNrRU5hmF-M_MbZrC5tartpVyjdIPS3YKfXGeGteuk66QRZlhURvyz7pw7WkQfENkjsm-NqIx2KzO0iOz_RWRfdpbVVn4XCO8Qfhjvv6kX2YPrJDRGa_ND9S3URkiPEy1DGR5_23H8YpSAxhhECv-ISInoZhRZx52qQfUOWkS20AGiO0gv5bYzg0Ok4F6XFGEIlVc4S0pA-QYG6U5DDxWiG0D57iZE_VOIUQUAQDWASIFIEu7-V4U19Iv3MAnPJEMkg3fSrZcSGoyU70EfH6uT0k71j6d-kLzueKVlUH7jw1uePfeDc0h4XvFRXCKOS_q4PKnNBTXNFID0D2G4BwyIPoSZLaJbaG7RF3KoPH8dH-Bpwn--4q1GpAipxJdxjYwKRApvcOe9CDhPV0wBgJ731FmPI1I8h-WA8i3Kt8ESni2NGOMuu7Tsr9Y441E_IroL6aQ7oNdU-0gPXPUj9HtHWzhnPEZuzBC2Bd1AG27LpVdUEzdt7OFs5qJ6xmGted8u3XDqn2H5JwVhpIXeOJBaHVTPnQwFWXOtwZlAwAfVyO1hnAmh0JmZn1yIUEAMB4URzE-QtKpWODJTHk-2-45wiUg68Nd5-mBeNMJlF3hLB3UMWdp6BBkt473QQZnRG9IzCCKMzGJxS0yLtMjTMiumVVbdikcdDiFl-DXJcbhmrKfDEeFy9XWzwY_JPLs6Eq5V2yNcsrDdXsuzyrgy81x6ZADVw1djjn7id8mFHBDdBTDYyaPrEN0l146HaH3ve0fTTI6YyFkmWZ7nJMnujW-_v4hPyHoyGTH4JOeg8ziuZIorFOuXb52y8EffyyHEOAf48PPYrJrcrd9MWj5MOWU3xK9mmP2c1YWa5U5aV40LhD7LPUsTunTyLFX6BuhQirOSf5rk9eF4bTT2WbpWTgDVjf2XpSlNJ-BCfFRPcX72-zf4bnKv1m8gN7x78z727knPScwuS5XcUey_vn_nqo34ij2OttWVRzRuHj6b0ba8LvEIid1dlennd6_vpb6b-V7K8F9fv91sEOndrrA7-f91T2N_WGwyjwmOyom_3uiwR3Ocmne0owbpvk-QzamvH2Uvoqb__pSKz6okW-FVFg6r-Yyynz6k7j2CLg6R2830_5j4RMwbZWXtrA8LZ2mJMW6a3HfaOklyynmdMCxYhSlJG5mVWZ3m4dWA4V49K_82uhBrKkpa8oVcJ1mZJHlCSrbo1pVgMqG0TIQsBEkyXGVE1IxwmlHGymah1gQTigvMkpwVCVvRShRVLkhS0bKpkxoxLA9c6ZXWLwf_dr9Q1p7kOmOM0oXmldQ2fCgQ0ssfEISIEP_dMKy9zrI6tRYxrJV19g3FKafleie5gK0REr6c86xMD3_LdpDW-kdEivHF5cWCP7ZKWJwGffntoVx3qla1OSCy9xbOf8vjYJ5k7RDZB78sIvvg938BAAD__6rdThI">