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