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

```C
void foo(void);
static int a, c;
static int *b = &a, *d = &c, *g = &a;
static char e, h;
static short f;
int main() {
    f = 5 - c;
    if (f ^ 0)
        ;
    else {
        foo();
 }
    *b = c >= 0;
    h = *g;
    char j = *d = h;
    e = j << 2;
    int i = e;
    c = -3;
    if (!(((i) >= 4) && ((i) <= 4))) {
        __builtin_unreachable();
    }
}

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

```asm
main: # @main
# %bb.0:
        xorl    %eax, %eax
        cmpb    $0, c(%rip)
        movl    $65533, %ecx                    # imm = 0xFFFD
        cmovel  %eax, %ecx
        cmpl    $5, %ecx
        jne     .LBB0_2
# %bb.1:
        pushq   %rax
        callq   foo@PLT
        addq    $8, %rsp
.LBB0_2:
        movb    $1, c(%rip)
        xorl    %eax, %eax
        retq
.Lfunc_end0:
```

clang-15.0.7 -O3 eliminates the call to foo:

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

Bisects to 0f32a5dea0e9ef5a52865f9fd285b394d46babaf (@rotateright )
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVU-Po7gT_TTOpZTI2JjAgUMn6fwuI_1Wq71HxhTgXoMz2KR7v_3KJkmHnoxmtZdFiC7Xq64_zy-2dE63A2JJxI6Iw0pOvrNj6Tv0HdrajqvK1n-V_9MXHMB3CI01xr7roQVlayT8hdADobdvRud3P68vVtfQWEtYHkzCCsJ3M-S89FqBHjxIwvagniGEvVRA-AEIy2IUYS_1zaGujvYz4ksK1ckRMIR1XyHX2dFDc3eHar3UA2E5YQWQ7dUPANDEAgLWD00Gv26AsLwBIl6BhtnuSHgWoWgcLpPGxJGZR1aAbA-fMffxFRD-Ggy6yNpdJ39pF-449tsNm_nqlu1EXwjZE74Hthxr8KBjAC7TRt-aP-GAsCR-w6sjf3O7abRZRlgGC3R_Q-f3R2pOp2rSxuvhNA0jStXJyuBXsgJFN74-jaUS56UycmjXfpyGP2H9fw61RQeD9YBG93qQHqO4lTQGvI0b8xNlS9fPnqgW_gKEcSApjcs5NDiYqKoNfUhSfNjREFoQJlB-zNKN1g1X_bmKeErn30MYVoz6fFcWoUVvL3OSNBOC81sa9QFPntCI7vu4bfTjeDweHorZC_7Yjlq0c60knqBvAxJabL7tdvTEvo6dPI59nlz3fS40Pk4rjQnuwHRKf_v2xx2RdT3Hp_m18OjOM3qr95C-t5cra8nPWfsV9SP677cKzTSoEw71w94tpfQoqERs6GYbFXUXkvvXSvr180-19l-xstMOlXdhcNpwJkWNkmKBjZCC5ZloiqZmuah4kdZpVslKzsdHSkfrpcdRt1049YtVXfK64IVcYZlk-bZIs7zgq67EQmy54MgzKZDnfKsYy3NFRZY3XCZspUtGGacZyxNK84RviizNZZJjypOiSIQiKcVearMx5tJv7NiutHMTlhkXW7EyskLj4m3I2IDvEEHCWLgcxzL8z7qaWkdSarTz7jOL195geUBZw97WCK9XQWg7wO_YjuhcMN87HGBy4QJ9esYFPuZz6uIgEeFwXE2jKTvvzy6wz46EHVvtu6naKNsTdgwtXP-sz6N9Q-UJO8bGHWHHONjfAQAA__8DCQ3a">