4 ms·
Wow, these release notes are completely useless. Here are some actual highlights of this release: * LLVM no longer assumes forward progress by default. This me
by nikic 5y ago
Wow, these release notes are completely useless. Here are some actual highlights of this release:
* LLVM no longer assumes forward progress by default. This means it no longer miscompiles infinite loops in non-C++ programming languages.
* LLVM now tracks applicability scopes for scoped noalias metadata. This means LLVM no longer miscompiles code for languages with high-quality aliasing information.
* Dead store elimination now uses MemorySSA, and can eliminate dead stores across basic blocks.
- tambre 5y agoPeople rarely seem to add release notes for their changes and I don't think anyone goes back at the end of the release cycle and picks out the highlights. For C++ features you also might be better off looking at cppreference.com [0]. [0]: https://en.cppreference.com/w/cpp/compiler_support https://en.cppreference.com/w/cpp/compiler_support
- api 5y agoI thought I was the only one with a git repo full of comments like "now with less bugs!"
- aaronbrethorst 5y ago"Now with different bugs!"
- MrMorden 5y agoSer Davos has some thoughts about your comment. http://gph.is/2vGAqYf http://gph.is/2vGAqYf
- a_e_k 5y agoDavos learned that from Stannis. https://www.youtube.com/watch?v=G0zNWswcqMg https://www.youtube.com/watch?v=G0zNWswcqMg
- dhosek 5y agoExcept this is about llvm and not clang. C++ features don't come into play with llvm since it's the middle step between the high-level compilation of the language and the writing actual machine code for the target architecture.
- adrian17 5y ago> Dead store elimination now uses MemorySSA, and can eliminate dead stores across basic blocks. I thought it wasn't enabled by default in 12? I recall this being said at some point. That said, I do appreciate this change making it into Rust, as it very visibly improves how it handles moving big structs around.
- nikic 5y agoThe change you have in mind is MemorySSA-based memcpy optimization, which is indeed not enabled in LLVM 12 (but is enabled in Rust).
- adrian17 5y ago...oh, yeah, I saw "now uses MemorySSA" and immediately thought of the memcpy optimization pass, without carefully reading the entire comment - my bad.
- myrmidon 5y ago> This means LLVM no longer miscompiles code for languages with high-quality aliasing information. This affects Rust, for instance, and might net 0-5% better run-time performance: https://github.com/rust-lang/rust/issues/54878#issuecomment-767151730 https://github.com/rust-lang/rust/issues/54878#issuecomment-...
- throwaway894345 5y agoIn general I would be very curious to know more about the bugs, etc in LLVM which would benefit Rust. I'm of the impression that there are many because LLVM is so over-fitted to the C++ ecosystem, but I don't know much about them in particular.
- nindalf 5y agoIf you're looking for someone to ask, the expert is nikic, author of the grandparent to your comment. They have worked on many of these specific improvements in LLVM, from which Rust has benefited.
- bla3 5y agoYou're saying the person complaining about the release notes is one of the people who wrote the release notes? :-D
- mrec 5y agoThe `A-LLVM` issue label is probably a good starting point. https://github.com/rust-lang/rust/labels/A-LLVM https://github.com/rust-lang/rust/labels/A-LLVM
- mshockwave 5y ago* LLVMBuild is removed. This means most of the building works are handled by CMake now