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

    <tr>
        <th>Summary</th>
        <td>
            Dead Code Elimination Regression when using __builtin_unreachable (trunk vs 15) 
        </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/EffzqnYq1

Given the following code:

```C
void foo(void);
static int a = 24821, d;
static int *b = &a;
static int **c = &b;
void __assert_fail();
static int *e(short f, short g) {
    char h;
 if (f) {
        if (!(((g) >= 24821) && ((g) <= 24821))) {
 __builtin_unreachable();
        }
        int *i = &d;
 unsigned char j = g, k = f;
        h = j % k;
        if (h) i = 0;
        if (b)
            ;
        else
 __assert_fail();
        if (b || i)
            ;
        else
 foo();
        ;
    }
    return 0;
}
int main() { *c = e(a, a); }

```
clang-trunk -O2 generates:

```asm
main:                                   # @main
# %bb.0:
        pushq   %rbx
        movl    a(%rip), %ebx
        testw   %bx, %bx
        je      .LBB0_5
# %bb.1:
        cmpq    $0, b(%rip)
        jne     .LBB0_5
# %bb.2:
        xorl    %eax, %eax
        callq   __assert_fail@PLT
        cmpb    $-11, %bl
        je      .LBB0_5
# %bb.3:
        cmpq    $0, b(%rip)
        jne     .LBB0_5
# %bb.4:
        callq   foo@PLT
.LBB0_5:
        movq    $0, b(%rip)
        xorl    %eax, %eax
        popq    %rbx
        retq
.Lfunc_end0:
```

clang-15.0.7 -O2 generates:

```asm
main:                                   # @main
# %bb.0:
        pushq   %rax
        cmpw    $0, a(%rip)
        je      .LBB0_3
# %bb.1:
        cmpq    $0, b(%rip)
        jne     .LBB0_3
# %bb.2:
        xorl    %eax, %eax
        callq   __assert_fail@PLT
.LBB0_3:
        movq    $0, b(%rip)
        xorl    %eax, %eax
        popq    %rcx
        retq
.Lfunc_end0:
```

Bisects to 66efb986322b206834e7c9e1eb777fa053912c39 (@LebedevRI)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVk1v6zYQ_DXrCxGDWn0ffEicuCgQoMVDLz0ZpLSymNCiI1JO-n59QTF2ZMfua9EUqCDYFHc4O7scQRTWqk1HtID0DtL7mRhca_qFa8m1ZGrTz6Sp_1i0zu0sxLeAK8DVxtTSaDc3_QZw9R1w9dA031-6318i4PfAb8PvT2pPHXMtscZobV5Vt2GVqcnzTGCQ8XAvw_PeqJo1xgAWfghYQnwXQtYJpyqmOscEg_ieYVJgBLhk9SUM4K0cYYCZuAIAvK0OGHnEjBrWa2Et9W7dCKUBiytKAG8JsLCt6R1rvJgw3ACWDPL3BYwxVrWiZ-2Rg6mGARbNJ5y_Qgx8dUW4A1_8MKm79KoBM3aCWE4R4Z7wr9dyUNqpbj10PYmqFVLTWXUHEZDfn6kK9apDxz7azoZudFIdqnwaERvfjedx2Hwib8f5JwaYsudP0VB_67WHbPwKRHrhJ_Oj8nMwaUvHDlzf1zNuBvkS8iVT_zhJMPDFpk4nTjrckxv6blLpMer7vhWqC5R-N9nRuH7zhG-0CNk-OM_er_BYadFtblw_dM_s5hdkG-qoF47stddS2G2YGQXEJx24cgHGDBI-LghkfgJTKed8kqbcDbZ9AV4Cpr18O05vzV4DL8VYbdqr3WjipWegCcyRda9htXx7j0_CTwS8nD_e3fF1eq4imqqotrsgIuGeRZ6kPbJ1f0GHU7o30-ugisRBlh8d0wmtfb5TGyb818ffppJkkHQTRYfS9N8qLf7a0pITunfp3twTwYelE-TW7H-c-Eed2pndBXf05F4OeZuhq9bU1RNXnbp96vkonfN5_r8y_dQW293rpGPi8lZ97FT8tZ7-RPe1nj4k-Q8tUv0ri9wpS5WzzBmWZdTIsshiRIk8K-KE8qqkiGSe543gaVxGWMXl-NVN-CNJqmn_7WfAclYv4rqMSzGjRZQVWZGkWKazdpFEkaSI0iorRSxKnjZ5XlKZFk2ZY8blTC2QY8yzKI0yXnirUiSlzNIij_OU5wkknLZC6bnW-60_es2UtQMtsjiO-UwLSdqOpzjEjl7ZGAREf6jrF37NjRw2FhKulXX2g8Upp2lxT6JmS1MTe9BqqzrhlOnYN9r0ZK0fvrbUscH6M9zFE4RvRvio7C2LUv-Vmg29Pj85KtcOcl6ZLeDKS3j_u9n15okqB7gahVvA1VjYnwEAAP__say3Rg">