about summary refs log tree commit diff
path: root/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2021-09-21 07:52:15 +0000
committerbors <bors@rust-lang.org>2021-09-21 07:52:15 +0000
commit49c0861ed0fa1d95186d88df0cd4310103e70957 (patch)
treefb23da19572256bcb13815197398368a8b862baf /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
parente7958d35ca2c898a223efe402481e0ecb854310a (diff)
parent11024b26bfc0930548ee717fb6d743d80a8e56f2 (diff)
downloadrust-49c0861ed0fa1d95186d88df0cd4310103e70957.tar.gz
rust-49c0861ed0fa1d95186d88df0cd4310103e70957.zip
Auto merge of #87234 - cjgillot:lower-mono, r=petrochenkov
Lower only one HIR owner at a time

Based on https://github.com/rust-lang/rust/pull/83723
Additional diff is here: https://github.com/cjgillot/rust/compare/ownernode...lower-mono

Lowering is very tangled and has a tendency to intertwine the transformation of different items. This PR aims at simplifying the logic by:
- moving global analyses to the resolver (item_generics_num_lifetimes, proc_macros, trait_impls);
- removing a few special cases (non-exported macros and use statements);
- restricting the amount of available information at any one time;
- avoiding back-and-forth between different owners: an item must now be lowered all at once, and its parent cannot refer to its nodes.

I also removed the sorting of bodies by span.  The diagnostic ordering changes marginally, since definitions are pretty much sorted already according to the AST. This uncovered a subtlety in thir-unsafeck.

(While these items could logically be in different PRs, the dependency between commits and the amount of conflicts force a monolithic PR.)
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions