Conversation

Okay, and that also means that using MADV_FREE in malloc and elsewhere is not possible either, which is a massive performance cost. Uninitialized memory can and does change value at runtime beyond just compiler optimizations avoiding saving uninitialized data via spill / restore.
2
3
That's likely glibc what is going to be doing for their stack cache since MADV_DONTNEED is a significant performance cost for their implementation, and it doesn't become a non-issue if restricted to malloc since it still means that uninitialized memory can change between reads.
1
4
Reading uninit data being undefined instead of locking it to an unspecified value permits massive optimizations like MADV_FREE and more efficient register allocation/spilling. Similarly, other memory safety issues being undefined permits optimization / freedom of implementation.
1
5
This Tweet was deleted by the Tweet author. Learn more
There's nothing disingenuous about saying that an optimization is an optimization. Many of the things that have been mentioned in this thread have a substantial impact on optimization including the basic memory safety guarantees, which optimizers lean on very heavily.
2
1
There have just been a whole bunch of threads about these issues. It's you being disingenuous by picking out 2 specific things that are not a huge part of how optimizations are implemented. No one has claimed that those 2 things enable major optimizations. It's a strawman.
1
1
Simply taking away the basic memory safety and pointer arithmetic guarantees forbids most code motion (like hoisting out of loops), makes the compiler unable to see that tons of loops terminate or only access within the bounds of an object, etc. It kills most loop optimizations.
1
Even the simple loop optimizations, not just more aggressive things like unrolling and vectorization. The optimization stack is based on basic guarantees from the assumption that memory safety isn't broken. No data races, no out-of-bounds accesses, no use-after-free, etc.
2
Show replies
The arguments you're trying to make aren't strengthened by your repeated personal attacks and dishonest statements. You can keep claiming to know best and that people disagreeing with you are ignorant or not knowledgeable about their craft but it's very clearly not the case.