<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63411>63411</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/jrn4o3s9c
Given the following code:
```C
void foo(void);
static short h = 4;
static int i, j, l, o, b, f;
static int *k = &j, *n = &l, *p = &o, *q, *a = &j, *e = &o;
static char m;
static unsigned char *r = &m;
static short *c = &h, *g = &h;
static char *d = &m;
static char(s)(unsigned b) {
if (!(((b) >= 0) && ((b) <= 206))) {
__builtin_unreachable();
}
return 0;
}
static char(t)(char d, int e) { return e >= 2 || d > e ? d : d << e; }
static int(u)(int b, int g) { return g == 0 ?: b % g; }
static void v(int *at) { *at || (n = 0); }
static int *w() {
*a = 0;
p = 0;
return q;
}
static void x(char ah) {
b = u(*n, ah);
(*c = b) == (*d = 206, s(t(0 < ah, ah)));
*p = 0;
}
static void y(int *) {}
int main() {
if (h) {
y(&i);
x(h);
w();
i = f = *e;
v(&f);
*g = 7;
q = k;
s(*r);
s(0);
} else {
foo();
}
}
```
clang-trunk -O2 generates:
```asm
main: # @main
# %bb.0:
pushq %rax
movzwl h(%rip), %eax
testw %ax, %ax
je .LBB0_5
# %bb.1:
testb %al, %al
je .LBB0_2
# %bb.3:
cmpb $1, %al
jmp .LBB0_4
.LBB0_5:
callq foo@PLT
jmp .LBB0_6
.LBB0_2:
movw $1, h(%rip)
.LBB0_4:
movq p(%rip), %rax
movl $0, (%rax)
movq $0, p(%rip)
movw $7, h(%rip)
.LBB0_6:
xorl %eax, %eax
popq %rcx
retq
.Lfunc_end0:
```
clang-15.0.7 -O2 generates:
```asm
main: # @main
# %bb.0:
movq p(%rip), %rax
movl $0, (%rax)
movq $0, p(%rip)
movb $1, h(%rip)
xorl %eax, %eax
retq
.Lfunc_end0:
```
Bisects to e1dd2cd063785ea3a6004c8d173f13113b1b8265 (@nikic)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEV02PozgQ_TWVi9WRKb4POaTTk72MtKvV3lsGTHC3g9PYJD3z61e2ISGEHq32MlHkQH28en5VpmmmtTi0nG8gfob4ZcV606huYxpuGq4q1a0KVf3YNMacNIRbwD3g_qCqQkmzVt0BcP8TcP_WtZEKdV4CfQG69esf4sxbYhpOaiWluoj2QEpVcYszCYOE-u_O35-VqEitFGBmLwFzCJ-9SxtmREl0ozpDGgLhC4nmTtEaIgB35M0u0i7KLoVd6qVowO27wwJMXBLgth0NcjCcRoMaDB_DL5un8lvkrFjZsI4c59a-dS2ovBtw240AD6F-44DbcgxphqKHm2GpKOC2-hLVRgBm2iqN2ZVOAZgTSIdYQggRNQHMAAO32q-PCb9ZaOquMQFMyJ13Z71IE4ef36O-vha9kEa0r33bcVY2rJDcZd-6bktD-nK76bjpu5bQa8TVe78j43fkFKisULbbfCAwovCRPxJId5DuiFXqm7Pv3fXWrTsId4RD-Ezm1URrrG6-mC1RjLUOs1quS04rC26RCwIYk8MSrDsH5wHSDpoZ0dzNyBYw88NKvWZL9GzGxat639Hr_NI7tU9z28D_40vFHdnPUWzWPFQqHGTvSGxbK5ALum-yc_rZHmbnxQ9tdh1gN0c7on17MyukhxoB_fcedjvf0CL9HzetR_pjmDUfmWiXNPSn4nHH9vPDJSRiTsl-Poesm-OyMPiugmNfDwd4yx8Czr5MvZR8fTikN9eHM7w_xGqvdLeEY3104VgSLjWf7Nw_ub88v7eL-4e_vy0law9Ppuvbd_L0J5IDb3nHDNdf_c1g-ugtrjvhle0vPoAhgYi6BA9mDRgXxZpOyuSnXjcfQHPAuGOfV_NRnX9eJNC8cduMO3FyM2dPYswngYZrc_H57HPwT9xvHGi-_v78TF_jOY9gysPiFAOOHHHkEg7OccIpTnk8eZgoWEA5nq4wkbeO3KYQTEorie1xRP_6_s9ifjLNx2n-UZ0vEwr3Ck6SolmSrXlakHvWF-mxqfdmQ8AIfYMaY06P9e9Ipr8kmUxJfqrOV3cj8DgMJ3UaZ6m8WTtuPkbIum_LV95Wkxm8PxvTExLEa7pOf_sR-Q2tKX49P_-hFf9D9GeheWk0MYrwoKqwrGgSplnMWcgSSqMyq4I0rIMwCMIiKDJMYrfLiLbiXZSA-arahFUe5mzFN0GSpZjmcRismk2clFUZUQzqJOURrzFOaF7QuK5YEpZ5tBIbpBjSBGmQRDFm64AFWZbXJcZpGKZxDRHlRybkWsrz0b6Tr4TWPd8kYRQEK8kKLrV7vUds-YU4JyDat_1uY3Oeiv6gIaJSaKNvKEYYyTcvnFVkpypOvklxFC0zQrXkb37ouNb28tLwlvTavtwvvsxZIfwD_axJEFst-k7O_6MQpumLdamOgHvLYPh5OnXqjZcGcO94a8C929e_AQAA__9bwjiq">