On Thursday, 27 July 2017 at 11:46:24 UTC, Steven Schveighoffer
wrote:
On 7/27/17 2:48 AM, Jacob Carlborg wrote:
And then the compiler runs the "Dead Code Elimination" pass
and we're left with:
void contains_null_check(int* p)
{
*p = 4;
}
So the result is that it will segfault. I don't see a problem
with this. It's what I would have expected.
Except that that code was used in the Linux kernel where page 0
was mapped and thus de-referencing the pointer did not segfault.
The issue that is missed here is for what purpose the compiler is
used. Will the code always be run in a hosted environment or is
it used in a freestanding implementation (kernel and embedded
stuff). The C standard makes a difference between the 2 but the
compiler gurus apparently do not care.
As for D, Walter's list of constraints for a D compiler makes it
imho impossible to use the language on smaller embedded platforms
ring 0 mode x86.
That's why calling D a system language to be somehow
disingenuous. Calling it an application language to be truer.