<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63625>63625</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>
    https://godbolt.org/z/oecxca7hK

Given the following code:

```C
void foo(void);
static char e = 3, i;
static unsigned f = 6;
static int g, h = -1L;
static char(a)(char b, char c) { return c == 0 ?: b / c; }
static short(d)(short c) {
 if (!(((c) >= -1) && ((c) <= 0))) {
        __builtin_unreachable();
 }
    return 0;
}
int main() {
    char j = 0;
    if (0 >= f) {
        e = 0;
        for (; e; ++e) {
            foo();
 j = a(1, j) != g;
        }
        d(4);
    }
 d(i);
    d(h);
    a(0, -1L);
    f = 0;
}

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

```asm
main:                                   # @main
# %bb.0:
        pushq   %rax
        cmpb    $1, f(%rip)
        jne     .LBB0_3
# %bb.1:
        xorl    %eax, %eax
        .p2align        4, 0x90
.LBB0_2: # =>This Inner Loop Header: Depth=1
        movb    %al, e(%rip)
        callq   foo@PLT
        movzbl  e(%rip), %eax
        incb    %al
        jmp     .LBB0_2
.LBB0_3:
        movb    $1, f(%rip)
        xorl    %eax, %eax
        popq    %rcx
        retq
.Lfunc_end0:
```

clang-16.0.6 -O2 eliminates the call to foo:

```asm
main: # @main
# %bb.0:
        movb    $1, f(%rip)
        xorl    %eax, %eax
        retq
.Lfunc_end0:
```

Bisects to 946b32680311f43a349d0199f9e286f385cd9847 (@floatshadow )
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVl9v4zYM_zTMi9BApmzHfsjDpWm2YQU2DPdeyBIdq3MknyW33X36QXKaJrncNhxmBInEPz-SP1KxpPdmb4nWUGyg2C7kFDo3rkNHoSOn3bhonP5r3YUweBCfAHeAu73TjevD0o17wN1XwJ0j9abkqvsV-Bb4p_n7J_NCloWOWOv63r0au2fKaYo4Z2ZQ8vlzP-9fnNGsdQ6wikvAGsRmVvkgg1FMdXJkxEBsmQC8Z-baYLKpKs3aZFRe640NbB89u6S_yx5vhQCsZIyOVQrYRIe0UoA1g9WGjRSm0TIVUSIQZyB2ID6xhgHumAKxYbDaXiD7zo0BsNIzdNqeEGdLZloGWAFm6Tt-ZgPxMKebNlgCluxCfZ-SSMD1JeLxeXpqJtMHY58mO5JUnWx6ShAfJH9kHD2OJfKT-qSNJB6ksbP7ZaxE0zOb0xFnirky_l5KezNLuuEYn9aNqV6xYZSoxQ3ghm5izPbuurY5JwlYZbGdzzOTWRTuv4l3QUR8NGCVX-BdWEW1uVZHYXctjAnwmEAcvStde1X9Cf_quMxb1Uu7vwvjZP9kd78h0448sy4w6s3BWBkonUAl-54Flyj5zvGT_jBLUlPFBZPfeQAFg5wnhxksCrBomiU_C1MPk---AK8Bi1G-ncTqMDRJmqdmtKlZxWiGSMm70bMl4PXycbPhT-I6SnYe5c2N_RyE5FsEPK7e9csBZW_2FnidRzV_q48kzugYi07Y8TQ_fO6MZ79YSyN7dG5gP5PUNEabLQ2hA7HNTtAH9zJXUsg-QtPNUmITIg2xCTn__fHzuf_XJiZ_6fhtDcaqj0Anig7DiSI8r0ic03PK8Z_Y_jcOBze8N1J9SEcKX97jtpNVT2T12QBcTuz53Gblki_LNLinefU_PLD_dRz_FyZ-oOaN8aSCj2XVedkILCsusqzNhRR5rXlW121NWJWtqAql6ypfpf-7nLe9k8F3UrtXBlgv9FroWtRyQeusrKosF3nBF926zKqi1IIU14USWLZqVayKnFZqhW1ZZQuzRo6Cl4JnZZ7zeomNRuJ5qXXG67bNIed0kKZf9v3LIb7hF8b7idalKLFY9LKh3qfLAqKlV5aUgBjvDuM6-tw1095Dznvjg_9ACSb0tN6S1OzeaWIPx3YbZ9kftB_J-7h87ciyycerws13VeRj_rN78SwrIxfT2F_fT0zopmap3AFwFzM4_twNo3smFQB3KW8PuEt1_R0AAP__a0RaGQ">