<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63330>63330</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/EffzqnYq1
Given the following code:
```C
void foo(void);
static int a = 24821, d;
static int *b = &a;
static int **c = &b;
void __assert_fail();
static int *e(short f, short g) {
char h;
if (f) {
if (!(((g) >= 24821) && ((g) <= 24821))) {
__builtin_unreachable();
}
int *i = &d;
unsigned char j = g, k = f;
h = j % k;
if (h) i = 0;
if (b)
;
else
__assert_fail();
if (b || i)
;
else
foo();
;
}
return 0;
}
int main() { *c = e(a, a); }
```
clang-trunk -O2 generates:
```asm
main: # @main
# %bb.0:
pushq %rbx
movl a(%rip), %ebx
testw %bx, %bx
je .LBB0_5
# %bb.1:
cmpq $0, b(%rip)
jne .LBB0_5
# %bb.2:
xorl %eax, %eax
callq __assert_fail@PLT
cmpb $-11, %bl
je .LBB0_5
# %bb.3:
cmpq $0, b(%rip)
jne .LBB0_5
# %bb.4:
callq foo@PLT
.LBB0_5:
movq $0, b(%rip)
xorl %eax, %eax
popq %rbx
retq
.Lfunc_end0:
```
clang-15.0.7 -O2 generates:
```asm
main: # @main
# %bb.0:
pushq %rax
cmpw $0, a(%rip)
je .LBB0_3
# %bb.1:
cmpq $0, b(%rip)
jne .LBB0_3
# %bb.2:
xorl %eax, %eax
callq __assert_fail@PLT
.LBB0_3:
movq $0, b(%rip)
xorl %eax, %eax
popq %rcx
retq
.Lfunc_end0:
```
Bisects to 66efb986322b206834e7c9e1eb777fa053912c39 (@LebedevRI)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVk1v6zYQ_DXrCxGDWn0ffEicuCgQoMVDLz0ZpLSymNCiI1JO-n59QTF2ZMfua9EUqCDYFHc4O7scQRTWqk1HtID0DtL7mRhca_qFa8m1ZGrTz6Sp_1i0zu0sxLeAK8DVxtTSaDc3_QZw9R1w9dA031-6318i4PfAb8PvT2pPHXMtscZobV5Vt2GVqcnzTGCQ8XAvw_PeqJo1xgAWfghYQnwXQtYJpyqmOscEg_ieYVJgBLhk9SUM4K0cYYCZuAIAvK0OGHnEjBrWa2Et9W7dCKUBiytKAG8JsLCt6R1rvJgw3ACWDPL3BYwxVrWiZ-2Rg6mGARbNJ5y_Qgx8dUW4A1_8MKm79KoBM3aCWE4R4Z7wr9dyUNqpbj10PYmqFVLTWXUHEZDfn6kK9apDxz7azoZudFIdqnwaERvfjedx2Hwib8f5JwaYsudP0VB_67WHbPwKRHrhJ_Oj8nMwaUvHDlzf1zNuBvkS8iVT_zhJMPDFpk4nTjrckxv6blLpMer7vhWqC5R-N9nRuH7zhG-0CNk-OM_er_BYadFtblw_dM_s5hdkG-qoF47stddS2G2YGQXEJx24cgHGDBI-LghkfgJTKed8kqbcDbZ9AV4Cpr18O05vzV4DL8VYbdqr3WjipWegCcyRda9htXx7j0_CTwS8nD_e3fF1eq4imqqotrsgIuGeRZ6kPbJ1f0GHU7o30-ugisRBlh8d0wmtfb5TGyb818ffppJkkHQTRYfS9N8qLf7a0pITunfp3twTwYelE-TW7H-c-Eed2pndBXf05F4OeZuhq9bU1RNXnbp96vkonfN5_r8y_dQW293rpGPi8lZ97FT8tZ7-RPe1nj4k-Q8tUv0ri9wpS5WzzBmWZdTIsshiRIk8K-KE8qqkiGSe543gaVxGWMXl-NVN-CNJqmn_7WfAclYv4rqMSzGjRZQVWZGkWKazdpFEkaSI0iorRSxKnjZ5XlKZFk2ZY8blTC2QY8yzKI0yXnirUiSlzNIij_OU5wkknLZC6bnW-60_es2UtQMtsjiO-UwLSdqOpzjEjl7ZGAREf6jrF37NjRw2FhKulXX2g8Upp2lxT6JmS1MTe9BqqzrhlOnYN9r0ZK0fvrbUscH6M9zFE4RvRvio7C2LUv-Vmg29Pj85KtcOcl6ZLeDKS3j_u9n15okqB7gahVvA1VjYnwEAAP__say3Rg">