On Saturday, 19 January 2019 at 17:45:41 UTC, Patrick Schluter wrote:
Afaict NULL pointer derefernecing must fault for D to be "usable". At least all code is written with that assumption.

Dereferencing `null` in D is implementation defined (https://dlang.org/spec/arrays.html#pointers).

For LDC, dereferencing `null` invokes Undefined Behavior [1]. However, the compiler does try to be a little friendly towards the programmer. UB includes just ignoring the dereference, but if you are blatantly dereferencing `null` with optimization enabled, the compiler generates a `ud2` instruction for you:
https://d.godbolt.org/z/5VLjFt

-Johan

[1] Now I am not quite sure yet whether Undefined Behavior is part of the set of behaviors allowed to choose from for Implementation Defined behavior. ;-)

Reply via email to