If a supplier sent you out-of-spec parts because they didn’t think your spec was actually important, you’d call them fraudulent, not clever.
It's not merely "pretty sure" - the language is specifically defined this way. C++ in particular requires as a minimum standard from practitioners a perfect knowledge of the vast, complex language standard. Anything less and you'll write a program which is ill-formed or has undefined behaviour, ie your program is nonsense.
GCC can be passed `-fno-delete-null-pointer-checks` precisely to prevent this. Linux uses it, see e.g. https://lkml.org/lkml/2018/4/4/601 where it's discussed.
Yeah based on https://joelaro.wordpress.com/2015/09/30/gcc-optimization-fd... the assumption is that if the pointer was previously dereferenced, it can be assumed to be non-null, and hence all subsequent null-checks can be elided.
Based on https://news.ycombinator.com/item?id=17360772, the case in which this actually makes a difference is an address offset like
int *n = ¶m->length
The compiler knows the structure so it can just inline the offset, but the optimizer considers this as being non-null.And address 0 isn't too special on a machine level either. Embedded systems have valid data to read and write there.
If you were on a platform that did this wrong, speculative execution could have been dereferencing the NULL pointer.
I found lots of bugs porting code to it. It was my first 64-bit platform.
E.g. if the architecture has pointers with non-address bits (modes or segments or whatever) and those bits were set yet the rest of the address was 'null', and the check was for 'all bits zero' then you could conceivably get that situation.