This documents major changes to IR semantics or project infrastructure which are happening over long time frames. It provides a brief overview on current transition state and links to some place where more information can be found.
Details
- Reviewers
- None
Diff Detail
Event Timeline
llvm/docs/OngoingMajorChanges.rst | ||
---|---|---|
22 | Clang 15 will change IR codegen as well? |
Not major, I would also mention switch to llvm.abs and llvm min / max intrinsics. Finished in trunk, right?
Also it would be interesting to have here some status/future plans/ideas to explore for new passes like CE by @fhahn, SLP with memory versioning, LoopFlatten, FuncSpecialization, DFA pass, etc..
In terms of the DFA pass, we're currently working on providing a feature to the Rust community. It's not really Rust-specific, it just has been reported by Rust folks. The idea is to relax the legality condition somewhat to allow switch statements, where the initial value of the switch condition isn't constant (e.g., it comes from a formal argument of the function) https://github.com/rust-lang/rust/issues/80630
There's also ongoing testing effort to enable the pass by default.
Although, I wouldn't say that any of these two changes are "major"; they won't affect everyone, like opaque pointers or new PM will, they are incremental improvements to an isolated transformation pass.
IMO we should keep the document focused on major changes to key infrastructure that have a wide impact across LLVM and/or impact downstream users and/or frontends. If we were to include (big) changes to existing passes or new passes, then this document will likely become too big to be useful and too big to reasonably keep it up-to-date.
Clang 15 will change IR codegen as well?