<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">