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

Given the following code:

```C
void foo(void);
static struct {
 int b;
} f;
static int c, d = 3;
static int *g = &c;
static void h();
static unsigned i(int, int *, int *);
static int j() {
 h();
    d = 0;
    return 1;
}
static void h() { i(8, &d, g); }
static unsigned i(int k, int *, int *l) {
    short a;
    c = 0;
    for (;; ++c) {
        int b;
        if (k) {
 int e = a >= 0;
            if (e) return 0;
            a = 0;
 for (; a >= 0; a--) k = 0;
            if (*l) continue;
 __builtin_unreachable();
        } else
            foo();
 return f.b;
    }
}
int main() { d || j(); }

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

```asm
main:                                   # @main
# %bb.0:
        cmpb    $1, d(%rip)
        jne     .LBB0_2
# %bb.1:
        pushq   %rax
        callq   foo@PLT
        movb    $1, d(%rip)
        addq    $8, %rsp
.LBB0_2:
        xorl    %eax, %eax
        retq
.Lfunc_end0:
```

clang-16.0.6 -O3 eliminates the call to foo:

```asm
main:                                   # @main
# %bb.0:
        xorl    %eax, %eax
        retq
.Lfunc_end0:
```

Bisects to 15d5c59280c9943b23a372ca5fdd8a88ce930514 (@vfdff )
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVk1z8yYQ_jX4smMPAn0edIiTuJd3pp1OLz1lEKwsEgx-BXLS_voOku1IjjM9daaMbSH263l2WbDwXu8tYk2yLcmeVmIInevr0GHo0CnXrxqn_qq7EI6e8AfCdoTt9k41zoSN6_eE7f6OX64ynzyrPwl9IvRh-v1Fn9BC6BBaZ4x713YP0imMfmZqJKfT53F6PzmtoHWOsDJOCasI304iH0TQEnzoBxmAFOdl0DZAc9UixRO0tzZRRRL2CAoIfwJ-T07Yw36UEpbLW4URVkdYeQfQYMcsKtCEldqGGOfscDH9Yhglr5PPGZ3bKABwhk0Xaz2GobeQzJl_izn6H_GVERJhuYrP_RQHbi1vGcHbfU5miRwAfOf6AGIBVN4B37oeIjK-HeOzLWFb-cVbHMvqXlfbaP62tIiqOAYTQPjz16hLa4zW5yze1xO3yD9hL0OAWK-jt7c7VJdBL1mTzgZtB_xUfXlpBm2Cti-D7VHITjQG7-yFOOImR-Pxa5SpdRY2Z4rtZpnGa9Gvk5i_g9B2tmUUkOKRFI-XfbrYLTcdPL1KI-x-HfrBvsH6Vw7KoQfrAqDRB21FwPFQkMIYCG7E-82JIPxhWhkx8QXNbwZhHEhKR4PJWVxgWdNs6CxMJQ_HhtCKsDQZT4WRXNbrY6R4UXq1SGi1-bHd0hd26y6ZuzsOvvs5-st68fEZRRgTlyPHlP7244-r5OBO_x5fKDU5Tc9Nm_X-OEkvoGYYPlxvJggoPs76OAPTY_h5MW4HK1_QqllOlkWclzLJN3STj7W8ltD_D2r4HxDeao8y-MgpyVQms4qVVFZVyhvGBS-YFFmrVCnKUmLFaZakY0-n9NSqNvZ3tVI1VxWvxArrJC-LKi0YTVdd3WYJZi2qhFZ5WSAVTJZlhbLgJa-qAle6ZpRxmrMyoQln6UbkZdKKNk-QMpEhJynFg9BmY8zpEK_flfZ-wDrnWZGvjGjQ-PEmZ8ziO4xCwli82Ps62qybYe9JSo32wX96CToYrJ9QKHh0CuH5XGXtLPyO-x69j9P3Di0MPt7jd4-qmImp7U8ekjzmYujN7Z8HHbqh2Uh3IGwXEZwf62PvXlEGwnYjbk_YbuT1TwAAAP__875Eow">