<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63529>63529</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>
```C
void foo(void);
static int e, f, h = 1;
static int *g = &f;
static unsigned i = 4;
static char j, k;
static char(a)(char b, int c) { return b >> c; }
static short(d)(short b) {
if (!(((b) >= 0) && ((b) <= 0))) {
__builtin_unreachable();
}
return 0;
}
static int l() {
if (i)
;
else {
h = 0;
for (; h;) foo();
j = a(5 & e, f);
k = j ^ 33;
d(k);
e++;
}
return *g;
}
int main() {
d(0);
*g = l();
for (; h; h--) i = 0;
}
```
clang-trunk -O1 does not eliminate the call to foo:
```asm
main: # @main
# %bb.0:
pushq %rax
cmpb $0, i(%rip)
je .LBB0_1
# %bb.4:
movb $1, h(%rip)
.p2align 4, 0x90
.LBB0_5: # =>This Inner Loop Header: Depth=1
callq foo@PLT
jmp .LBB0_5
.LBB0_1:
cmpb $0, h(%rip)
jne .LBB0_3
# %bb.2:
movb $1, i(%rip)
movb $1, h(%rip)
.LBB0_3:
xorl %eax, %eax
popq %rcx
retq
.Lfunc_end0:
```
clang-16.0.6 -O1 eliminates the call to foo:
```asm
main: # @main
# %bb.0:
cmpb $0, h(%rip)
jne .LBB0_2
# %bb.1:
movb $1, i(%rip)
movb $1, h(%rip)
.LBB0_2:
xorl %eax, %eax
retq
.Lfunc_end0:
```
Bisects to dfb369399d2a54c8dd8752c47ecbf7a8c3c11421
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0VkGPozgT_TWVSymRKQOBA4dJp1vfJ7W0q9XcWwZMcNqxM9j09P77lU1C0uloZmektSxiXOVXVa8eBOGc2hkpK8g2kG0XYvS9HSrfS99L29phUdv27wpyNs0HYFtgX96sarGzFqgIS6AS-GYyOS-8alAZjxLoAbtw6RH4FpN7TkBfdtEKlHe3DqOJ6bWookt6a296MeA-RHi9ZwIqRMiNiuhYB8cQswEqEdYbHKQfB4M1An8E_ogN8A3CevsByfV28EBFO0HF24AVISZPRETVIVABlMRrmJNPQN4ii2vKgXL8YH04W6d5hfnyUo9Ke2VeRjNI0fSi1jKevbAdAs_5hptTRWz2uK0m1K8nlHv5q4A-70X461hSO_nxWBhTe9kHzzA6O8Ri-Qb7YKTyJJrbEsLYRxABVGSBqFk9nz1fo-ceIXtEzi_mFqh4vXdAAm3C_BlrQYufiQuMHYQyn0gL8dinbpz1rO_UeUMI9stlgFQ3_M2hT9fz0zfdNlqY3dIPo3nF5R8JtlY6NNaj1OqgjPASfS-xEVqjt5Fx_uUunnCHaSeWx2e-fjCAOELK4oEJLGxQVtcrdhWmPI6u_wasBMoG8T5vN4djHXdTFh_GyFE2qOMsO2DlXgIrV8-bDXtJboOk10EO9u2ElsS3zF201ZGEVjsDrEyDF3svT0ROIbJQeAzAt8Afv_bK4f-NkQM-W3vE_0nRyiH4bOXR98C3yaUaoXUoMlCcsj-fv15KOBznGrLraMl1_jds3M9_by508Fs66Ad03Cf355ydQ10hv9tBT82U4j0cO63mbtvjudnNZXeQ_tsZshtN8yJNeyWSj6q-1naSr9gqj-KeNe1-W9T_VrK_3A26hUv-s27Qr3TjN3jfKCcb7wK1bVfzvORl2ZLI0qZo22KdUZOuZVN3a1E0vEmSlE5PwaKteFvyUixkleTFel0SZ-mir-psncs0rfOsbeuiyLKUdQmled6l1K2LeqEqYsRZTnmSJUnKV00t8zzvkqxo07wuSkiZPAilV1q_HVZ22C2Uc6Oscp5RudCiltrF7xYiI79jNAJR-IwZqnBmWY87BynTynl3QfHKa1ltpWjxwbYSH08SU9bgX3I3SOfC8nsvDY5Omd39f-LwIp9ewm8OkxyoXIyDrnrvjy6QTU9ATzvl-7FeNfYA9BQyOP0sj4Pdy8YDPcW8HdBTrOufAAAA__8t93RY">