diff options
| author | bors <bors@rust-lang.org> | 2023-05-24 16:18:21 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-05-24 16:18:21 +0000 |
| commit | 97d328012b9ed9b7d481c40e84aa1f2c65b33ec8 (patch) | |
| tree | 004ab106803c96f912f254b85c7d62b8ee16e453 /compiler/rustc_codegen_ssa | |
| parent | b3cbf7c8351dd48dc2e07a1cdc69620f8e40dd2f (diff) | |
| parent | 7c8f29f02c279acfa7b0c353e2187ad268e25de8 (diff) | |
| download | rust-97d328012b9ed9b7d481c40e84aa1f2c65b33ec8.tar.gz rust-97d328012b9ed9b7d481c40e84aa1f2c65b33ec8.zip | |
Auto merge of #111673 - cjgillot:dominator-preprocess, r=cjgillot,tmiasko
Preprocess and cache dominator tree Preprocessing dominators has a very strong effect for https://github.com/rust-lang/rust/pull/111344. That pass checks that assignments dominate their uses repeatedly. Using the unprocessed dominator tree caused a quadratic runtime (number of bbs x depth of the dominator tree). This PR also caches the dominator tree and the pre-processed dominators in the MIR cfg cache. Rebase of https://github.com/rust-lang/rust/pull/107157 cc `@tmiasko`
Diffstat (limited to 'compiler/rustc_codegen_ssa')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/mir/analyze.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/mir/analyze.rs b/compiler/rustc_codegen_ssa/src/mir/analyze.rs index 569599faa36..835074806e9 100644 --- a/compiler/rustc_codegen_ssa/src/mir/analyze.rs +++ b/compiler/rustc_codegen_ssa/src/mir/analyze.rs @@ -84,7 +84,7 @@ impl DefLocation { struct LocalAnalyzer<'mir, 'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> { fx: &'mir FunctionCx<'a, 'tcx, Bx>, - dominators: Dominators<mir::BasicBlock>, + dominators: &'mir Dominators<mir::BasicBlock>, locals: IndexVec<mir::Local, LocalKind>, } |
