Dead Code Elimination
libxmoc
libxmoc at gmail.com
Wed Oct 21 07:10:40 UTC 2026
On Monday, 19 October 2026 at 06:36:33 UTC, Walter Bright wrote:
> On 10/18/2026 8:33 AM, libxmoc wrote:
>> I noticed that dmd doesn't do DCE
>
> Yes, it does. Use the -O switch.
Even with -O it doesn't work:
```D
import bar;
extern(C) void main()
{
assert(1);
}
```
```D
module bar;
void removeme()
{
assert(0);
}
```
```
$ dmd -O -i -betterC -vasm app.d
main:
0000: 31 C0 xor EAX,EAX
0002: C3 ret
_D3bar8removemeFZv:
0000: 55 push RBP
0001: 48 8B EC mov RBP,RSP
0004: 48 8D 0D FC FF FF FF lea RCX,[0FFFFFFFCh][RIP]
000b: BA 05 00 00 00 mov EDX,5
0010: 48 8D 35 FC FF FF FF lea RSI,[0FFFFFFFCh][RIP]
0017: 48 8D 3D FC FF FF FF lea RDI,[0FFFFFFFCh][RIP]
001e: E8 00 00 00 00 call L0
0023: 5D pop RBP
0024: C3 ret
```
I disassembled both app and app.o, and `removeme` exists in both
More information about the Digitalmars-d
mailing list