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

Given the following code:
```c
void foo(void);
static int b, c;
static short d;
static int **e, ***f = &e, ****g = &f, *h = &b, *i = &b;
static char(a)(char j, unsigned) { return j; }
int main() {
 char k;
    for (; d <= 0; d++)
        if (*i) {
            int l;
            int *m = &l;
            *h = g != m;
            if (d) {
                __builtin_unreachable();
                k = a(k, 0);
            }
            {
                int *n = &c;
 if (a(0 != *f, *e || *n) != 1) foo();
            }
 }
}
```

clang trunk -Os generates:

```asm
main: # @main
        movzwl  d(%rip), %eax
 testw   %ax, %ax
        jle     .LBB0_1
        xorl    %eax, %eax
        retq
.LBB0_1:
        cmpb    $0, b(%rip)
        je .LBB0_8
        pushq   %rax
        movl    $1, %ecx
 jmp     .LBB0_3
.LBB0_8:                                # =>This Inner Loop Header: Depth=1
        movzwl  %ax, %ecx
        incl    %eax
 cmpl    $32766, %ecx                    # imm = 0x7FFE
        ja .LBB0_8
        movw    %ax, d(%rip)
        xorl    %eax, %eax
 retq
.LBB0_5:                                #   in Loop: Header=BB0_3 Depth=1
        movb    $1, b(%rip)
        callq foo@PLT
        movl    $1, %ecx
        movzwl  d(%rip), %eax
.LBB0_6:                                #   in Loop: Header=BB0_3 Depth=1
        movzwl  %ax, %edx
        incl    %eax
        movw %ax, d(%rip)
        cmpl    $32766, %edx                    # imm = 0x7FFE
        jbe     .LBB0_7
.LBB0_3: # =>This Inner Loop Header: Depth=1
        testl   %ecx, %ecx
 jne     .LBB0_5
        xorl    %ecx, %ecx
        jmp .LBB0_6
.LBB0_7:
        addq    $8, %rsp
        xorl    %eax, %eax
        retq
```

clang-16 -Os can eliminate the call to foo and generate less code:

```asm
main: # @main
        cmpb    $0, d(%rip)
        jne     .LBB0_4
 cmpb    $1, b(%rip)
        jne     .LBB0_3
        movb    $1, b(%rip)
.LBB0_3:
        movb    $1, d(%rip)
.LBB0_4:
 xorl    %eax, %eax
        retq
```

Bisects to 61d2f3a71e61929bf9b07c90e21d268090417bdb (@nikic)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0V1-P4yYQ_zTkZbQrDI7_POQh2Vza6k5qVZ1U3dMKGxKza0MWcLK9T1-B7cTOJXt71xZFMYaZ4TczP8bArJU7JcQCzVdovp6x1lXaLFwlXCU012ZWaP73onJubxFdIrJBZLPTvNC1u9dmh8jmKyKbL19M-Vf-8eMB4TXCy-7_F3kQClwlYKvrWh-l2kGpufB2OrEEd7-yez9oyWGrNSKZ7yKSI7rqpqxjTpYglYMCkQcoL2dspY0Dfk0BkSUiS-HVui4iyy0gugZEkukwIsvdMLPtZ6phoOgH5HngYrWyYgaRjHnkJPNv8OSVWhWi7D0ClK7ACNcaBU-IrgCl686Gh9owqRDJerluPFiF59NaAABbbcDL0RVwQPTBA8LhDZFV-OVnYd_kNsiTpZzaHjW_fj1ZZTyDyLIZ_L4udQrVDhCJfKe5bi1A4Tdx-Pb4WLSydlI9tsoIVlasqEUXmKs2fXsOizNEsmcfc3xL9hTw6eANq73vavD9TLzeEb8gHjz2zOpZIgClDygNfRWc7UQi3-9I_n2Ep965M-yZ8U4ra6Z24EyrnuHudws7oYRhTtjzVpsqM9t0I4FwdAmIUEAxDq8TPI0-fD3W4ImVITI3ch_I7d2aC_baCzth3TFwYM5e-9nTZN-eahGe959WK_wYTSdftak7EgWrl_b7ZoR76UYGI4N_g0TZ7IvOToy9lWICe4pH9FCy6fi-tdVLB8VcAmj0oYcZRwPIcpB5avYjB-kYaOZj_J0WUkDXiH74XEkLvyklDHzSeg-_CsaF8SbWYu8qRNfR9SSNw3_GdWJyOQ5xX1ua_eAQJWmSnJVvQZRNVwfwa7rZfLgIKbse0kYfjjCmB7-dlu8w4ZIC83dG1vsfounlh4CuQ6LeiGoxTvYbXCpZXb-EXR3jPz59_gHSXGTwzW3WeZz8rx5_yyP-Hh6NE_2eLN_iHf853hXj0pKOo0VP1e3ntpavbHXvbfnt3npS45Xnt6l8RXcA3-xhyOwIePpNbWOcv_Qxy3pjxu7_XR29_Tm5i5LwLSmZAlHLRirmRDjNebKD057uwBQ_fW2gFtZenPB-9rNzWcffoNI0BfG5sL13804N0B8uAmeiva16xYcB80n1P8nfSlpROutzlEScbClLI5FEOcmLbV7gtMyxIBEnSYZzHEdpwYtwOoyxks-yRCSf8QXlOc3ZTCyiJEsITTGJZ9WCxTQXjOEswozQfFvylGUkifMiLSMck5lcEEwoTnAWzSNM4vuIZCIVZD5PWUTnmKMYi4bJ-r6uD42_Qsykta1YJDTK6axmhahtuI0QosQRwiQixF9OzMLr3BXtzqIY19I6e7bipKvFYi0YhwfNBXzoOSu1gj_FzghrffdYCQWt9XeRq4dMH4juIHWwECU-Fq2pLy9A0lVtcV_qBpGNR9A_7vZGP4nSIbIJuC0im-DXPwEAAP__6yFX3Q">