<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63798>63798</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Dead Code Elimination Regression (trunk vs 16)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
thetheodor
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/esv1zKddc
Given the following code:
```C
void foo(void);
static int a = 5;
static int **c, **d;
static int *e = &a;
static int **f = &e;
static int ***g = &c;
static short(h)(short b) {
if (!(((b) >= 1) && ((b) <= 1))) {
__builtin_unreachable();
}
return 0;
}
static void i(int **) {}
static int **k(int **j) {
*j = 0;
h(0);
return *g;
}
int main() {
int **l;
if (a)
;
else {
int *m;
f = &m;
d = &e;
l = k(d);
i(l);
if (e == 0)
;
else
foo();
;
}
h(0 <= 9);
}
```
clang-trunk -O3 does not eliminate the call to foo:
```asm
main: # @main
# %bb.0:
cmpl $0, a(%rip)
je .LBB0_1
# %bb.4:
xorl %eax, %eax
retq
.LBB0_1:
pushq %rax
movq %rsp, %rax
movq %rax, f(%rip)
cmpq $0, e(%rip)
je .LBB0_3
# %bb.2:
callq foo@PLT
.LBB0_3:
addq $8, %rsp
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 7739be7c6b6d017bf6b4445c5010e59314655995 (@jrbyrnes)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vk2P4ygQ_TWVC-oIgz8POfTHZA870q5We29hU4npISZjcHZmfv0KsNO209GsRlrLcoB6vKpXVSYW1qpjh7iD7Amyl40YXGv6nWvRtWik6Te1kd93rXNnC_wR2B7Y_mhkbbTbmv4IbP8D2B7tJfnxu5QN0Begj_H5m7pgR1yL5GC0Nv-o7kgaI9HzzGCQ03g_x_nFKEkOxgAr_RBYBfwpmqwTTjVEdY4IAvyFZB-ZgD0Ce2yAPY9DeQeFgQNYLu7THCYM3scAezxOsGYNs63pHbCy9UJYGaakBlYRKEYkIYSoAwFWAkvC098Rwz954iSMWQ4sJwvr82SN95LTX6-v9aC0U93r0PUomlbUGgPFe1o9DoqXcdKjG_qO0Kv5ahoVhQIpYOU8A9H1CvkO-LKAvy1D9Sshf3QRUguspOs4x-h8ym8D9B5OQnVR3yrBV-96QRgTL7yfReIWINQWb3M7Up4WUH9dm-bWJG_7aTLpYPKZkmvVwRuwUn9oCApCM8ckrqXcyJkk3cLie7fwcqdNpgJNTVjNN11hq1c8ThstuuOD64fuC3n4gxNp0JLOOIJanVQnHIZToxFaE2dCTHeODGFPcSVUnftW4gRSGqYR6hdYVtdbOiOpmtNZA62ApdSfEyKIznp1viYPaPWGQKvt56cn-pqs2dI52zfTR7YMxbd47oTRZO_RfY2TiW22-TzY9mvc3c_2nMxlWrXnkfOOPfo8fKihOZ2_zoTiz4TytVC2SJvQ2tP5kqT0z89_z1XxOVJIOfotp-Dt-ZcSdhi65hU7Oavfsp3mTZXkW7rNQ1ddm8n-cjf9_Pqv_fY_CH5SFhtnvaai4FWNRZPXuaRJUR_yOk3TrMloQjGreJLmWVZVWfjvSOlbX3_vO7TAqo3ccVnxSmxwl-RlRYskqbJNuxOCIaaJqNIiyxqe8locDnmBXGCS55xv1I5Rxj0-oSzn2VbIJEsY42lRJE3DEVKKJ6H0VuvLyX8rbJS1A-5yXlTlRosatZ0-O_qdBz3Uw9FCSrWyzr5vc8pp3L2gkOTZSCSfxsIq05G_8NijtX4IrIxHysWSJPfahl6vv1yUa4d625gTsL13MP48nHvzho0Dtg9BWmD7EOe_AQAA__9_uVRx">