This is an archive of the discontinued LLVM Phabricator instance.

[Docs] Add documentation for ongoing major changes
Needs ReviewPublic

Authored by nikic on Mar 21 2022, 2:53 AM.
This revision needs review, but there are no reviewers specified.

Details

Reviewers
None
Summary

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.

Diff Detail

Event Timeline

nikic created this revision.Mar 21 2022, 2:53 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 21 2022, 2:53 AM
nikic requested review of this revision.Mar 21 2022, 2:53 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 21 2022, 2:53 AM
nikic updated this revision to Diff 416873.Mar 21 2022, 3:00 AM

Respect 80 char width.

Thanks, great!

xbolva00 added inline comments.Mar 21 2022, 3:49 AM
llvm/docs/OngoingMajorChanges.rst
22

Clang 15 will change IR codegen as well?

xbolva00 added a comment.EditedMar 21 2022, 12:36 PM

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..

@SjoerdMeijer
@aeubanks
@alexey.zhikhar

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..

@SjoerdMeijer
@aeubanks
@alexey.zhikhar

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.

fhahn added a comment.Mar 22 2022, 2:11 AM

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..

@SjoerdMeijer
@aeubanks
@alexey.zhikhar

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.