<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63626>63626</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/vjKv9a9d9
Given the following code:
```C
void foo(void);
static char a, c = 151;
static int b, f = 6, g, n;
static int *d = &b, *h = &f;
static int **e = &d;
static short i;
static unsigned char j;
static short o(int *l, short m) {
j = f;
if (j >= m) return 0;
foo();
if (*l) a = 5;
return i;
}
static void q() {
int k = b;
int ***p = &e;
&p == &g;
o(&k, c);
{
int l;
*e = &l;
if (!(((c) >= -105) && ((c) <= -105))) {
__builtin_unreachable();
}
}
for (; f != 9; f++)
;
c = 0;
for (; c; c = 1)
;
if (a) *h = 0;
*e = &n;
}
int main() { q(); }
```
clang-trunk -O2 does not eliminate the call to foo:
```asm
main: # @main
# %bb.0:
movl f(%rip), %eax
movzbl %al, %ecx
xorl %edx, %edx
cmpb $0, c(%rip)
movl $-105, %esi
cmovnel %edx, %esi
cmpl %esi, %ecx
jge .LBB0_2
# %bb.1:
pushq %rax
callq foo@PLT
movl f(%rip), %eax
addq $8, %rsp
.LBB0_2:
cmpl $9, %eax
je .LBB0_4
# %bb.3:
movl $9, f(%rip)
.LBB0_4:
movb $1, c(%rip)
cmpb $1, a(%rip)
jne .LBB0_6
# %bb.5:
movl $0, f(%rip)
.LBB0_6:
xorl %eax, %eax
retq
.Lfunc_end0:
```
clang-15.0.7 -O2 eliminates the call to foo:
```asm
main: # @main
# %bb.0:
leaq -4(%rsp), %rax
movq %rax, d(%rip)
cmpl $9, f(%rip)
je .LBB0_2
# %bb.1:
movl $9, f(%rip)
.LBB0_2:
movb $1, c(%rip)
cmpb $1, a(%rip)
jne .LBB0_4
# %bb.3:
movl $0, f(%rip)
.LBB0_4:
xorl %eax, %eax
retq
.Lfunc_end0:
```
Bisects to eaf6e2fc337ce428ae87d57360a2168c415acb5d (@luxufan )
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMV01vqzgX_jXOxkpkDuCERRZJe_Mu3ivNaDT7ymATnDp2ik3aub9-ZBsKpGnnzuJKEyEKPs_5es45xmXWyqMWYovyPcofF6xzjWm3rhGuEYabdlEa_te2ce5iUbpDcEBwOBpeGuVWpj0iOPxAcLie_n8tWMELRB4R2cX7_-RVaOwagWujlHmV-ogrw4W3M4EhSuL1EN-vRnJcG4Ng4x8RFCjdR5F1zMkKVw1rMUPwgCuM0kec5MktRGqHS4-oA4L6x6O_6XtIBDsecAho0EKwa4aF-hMNBDsxYPgtxjamdVjeLnc60M1jCqf7Wj7z3ofywcTVM4ICo3WvgDHGp-B9DM-vyRoj2HjJNy8MSq1wXasxGYGR3Smzo270WmAWrOczRG9pTAutH2cJhNq9RNuTYH02z8FeOff4ziSC3WUgU8wwCGiQ9MLjTBjToM-hF2b5zJgafKmZcrQ-FvGjdGAkCXd_VSGxSO4yIXl4BYqA4hngYQKI18eI_O_pqeykclI_dboVrGpYqcSd2oRYB7InTxjj2rTBd7r3zQ6J91yENwT7cBU3dqaG4wSR2drEYhVuccq-NhS5YpGQfnrITSVHrvXHFvIFOjOpx-4ZOsnH8A672TTia6WYPi5d2-lnvPwNMDfCYm0cFkqepWZOhH2oYkphZ0L_f7IJMXuOKyGUdFasT34IUowyEhSiMb8AeVmuyMRNcTZXhUhRh6TyVl5CY_jNJhfsbQr7UXoggpypAVCNgDfT9mLB3wY5H-XV-VIGeUb6uZj4uwkGQRa7NFqxcmLFXLX46GgGuQxyK-8EejoKRIrV9_2ePMEtNcmUmktnm5doqp1Q4evll329MvL79z__LZeM82g22_TS1l6idAhrEsV7Ptk9W6cxmew2mfROnQcz9Uf-Bytzpb5oyedFGysbQOwu6KTHQOltoPn9QMmXgdKp0qT72NsdmlrhXgblutPVk9B8MgbzuZ1Ob5KvyGodxvd9au1_YGyVYL6HlllPj530Wjuf20kLwwPmn9XwH7pj3mtfD87P9hr8-l772aH4uteyX9xre2lF5axvJ8FqKqCu0nRdiQw2TGzWPF-nlDBI6KbKkpxVZc7DtzAjqnvraqYxgmLBtykv0oItxDahm02SpTQvFs22rEpaljQlZJ2mnOYAhAKtUkaLTVaSfCG3QCAlNCUJzdZpsaooJDQXIhFFthYEUEbEmUm1Uup69ifshbS2E1uaUqALxUqhbDisA2jxioMQAfize7v1OsuyO1ofrrTOjlacdEps8aNgHD8YLvC3fsak0fgPcWyFtf7xtREad9af1e-eTTwZ8Tt7tTjxx5tF16rbfxCka7pyVZkzgoMPof-zvLTmJCqH4BACtwgOIbG_AwAA__9EQyt5">