2 ms·
> Don't compilers already have ways to mark variables and dereferences in a way to say 'I really want access to this value happen'? The standard defines it, it
by Joky 5y ago
> Don't compilers already have ways to mark variables and dereferences in a way to say 'I really want access to this value happen'?
The standard defines it, it's `volatile` I believe.
But it does not help with the examples above as far as I understand (removing the log, removing the early return, time-travel...).
- hramrach 5y agoI believe it completely solves the question ? May we remove '*p = 0;', whether we remove the malloc+free or not? Sure, it does not solve the question when arbitrarily removing NULL pointer checks is OK. It is true that when the compiler is inlining code or expanding a macro it may have a NULL check that is spurious in environments that do not map page 0 based on the observation that the pointer was dereferenced previously. And this assumption is incorrect in environments that do map page 0 causing wrong code generation.