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

    <tr>
        <th>Summary</th>
        <td>
            Dead Code Elimination Regression when using __builtin_unreachable (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>
    ```C
void foo(void);
static int e, f, h = 1;
static int *g = &f;
static unsigned i = 4;
static char j, k;
static char(a)(char b, int c) { return b >> c; }
static short(d)(short b) {
    if (!(((b) >= 0) && ((b) <= 0))) {
 __builtin_unreachable();
    }
    return 0;
}
static int l() {
    if (i)
        ;
    else {
        h = 0;
        for (; h;) foo();
        j = a(5 & e, f);
        k = j ^ 33;
 d(k);
        e++;
    }
    return *g;
}
int main() {
 d(0);
    *g = l();
    for (; h; h--) i = 0;
}

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

```asm
main:                                   # @main
# %bb.0:
        pushq   %rax
        cmpb    $0, i(%rip)
        je      .LBB0_1
# %bb.4:
        movb    $1, h(%rip)
        .p2align        4, 0x90
.LBB0_5: # =>This Inner Loop Header: Depth=1
        callq   foo@PLT
        jmp     .LBB0_5
.LBB0_1:
        cmpb    $0, h(%rip)
        jne     .LBB0_3
# %bb.2:
        movb    $1, i(%rip)
        movb    $1, h(%rip)
.LBB0_3:
        xorl    %eax, %eax
        popq    %rcx
        retq
.Lfunc_end0:
```

clang-16.0.6 -O1 eliminates the call to foo:

```asm
main: # @main
# %bb.0:
        cmpb    $0, h(%rip)
        jne     .LBB0_2
# %bb.1:
        movb    $1, i(%rip)
        movb    $1, h(%rip)
.LBB0_2:
        xorl    %eax, %eax
        retq
.Lfunc_end0:
```

Bisects to dfb369399d2a54c8dd8752c47ecbf7a8c3c11421

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VkGPozgT_TWVSymRKQOBA4dJp1vfJ7W0q9XcWwZMcNqxM9j09P77lU1C0uloZmektSxiXOVXVa8eBOGc2hkpK8g2kG0XYvS9HSrfS99L29phUdv27wpyNs0HYFtgX96sarGzFqgIS6AS-GYyOS-8alAZjxLoAbtw6RH4FpN7TkBfdtEKlHe3DqOJ6bWookt6a296MeA-RHi9ZwIqRMiNiuhYB8cQswEqEdYbHKQfB4M1An8E_ogN8A3CevsByfV28EBFO0HF24AVISZPRETVIVABlMRrmJNPQN4ii2vKgXL8YH04W6d5hfnyUo9Ke2VeRjNI0fSi1jKevbAdAs_5hptTRWz2uK0m1K8nlHv5q4A-70X461hSO_nxWBhTe9kHzzA6O8Ri-Qb7YKTyJJrbEsLYRxABVGSBqFk9nz1fo-ceIXtEzi_mFqh4vXdAAm3C_BlrQYufiQuMHYQyn0gL8dinbpz1rO_UeUMI9stlgFQ3_M2hT9fz0zfdNlqY3dIPo3nF5R8JtlY6NNaj1OqgjPASfS-xEVqjt5Fx_uUunnCHaSeWx2e-fjCAOELK4oEJLGxQVtcrdhWmPI6u_wasBMoG8T5vN4djHXdTFh_GyFE2qOMsO2DlXgIrV8-bDXtJboOk10EO9u2ElsS3zF201ZGEVjsDrEyDF3svT0ROIbJQeAzAt8Afv_bK4f-NkQM-W3vE_0nRyiH4bOXR98C3yaUaoXUoMlCcsj-fv15KOBznGrLraMl1_jds3M9_by508Fs66Ad03Cf355ydQ10hv9tBT82U4j0cO63mbtvjudnNZXeQ_tsZshtN8yJNeyWSj6q-1naSr9gqj-KeNe1-W9T_VrK_3A26hUv-s27Qr3TjN3jfKCcb7wK1bVfzvORl2ZLI0qZo22KdUZOuZVN3a1E0vEmSlE5PwaKteFvyUixkleTFel0SZ-mir-psncs0rfOsbeuiyLKUdQmled6l1K2LeqEqYsRZTnmSJUnKV00t8zzvkqxo07wuSkiZPAilV1q_HVZ22C2Uc6Oscp5RudCiltrF7xYiI79jNAJR-IwZqnBmWY87BynTynl3QfHKa1ltpWjxwbYSH08SU9bgX3I3SOfC8nsvDY5Omd39f-LwIp9ewm8OkxyoXIyDrnrvjy6QTU9ATzvl-7FeNfYA9BQyOP0sj4Pdy8YDPcW8HdBTrOufAAAA__8t93RY">