Skip to content

Commit

Permalink
Use preorder traversal when checking for SSA locals
Browse files Browse the repository at this point in the history
When rebuilding the standard library, this change reduces the number of
locals that require an alloca from 62452 to 62348.
  • Loading branch information
tmiasko committed Jun 7, 2021
1 parent 69e2f23 commit 4237a05
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion compiler/rustc_codegen_ssa/src/mir/analyze.rs
Expand Up @@ -18,7 +18,10 @@ pub fn non_ssa_locals<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
let mir = fx.mir;
let mut analyzer = LocalAnalyzer::new(fx);

for (bb, data) in mir.basic_blocks().iter_enumerated() {
// If there exists a local definition that dominates all uses of that local,
// the definition should be visited first. Traverse blocks in preorder which
// is a topological sort of dominance partial order.
for (bb, data) in traversal::preorder(&mir) {
analyzer.visit_basic_block_data(bb, data);
}

Expand Down

0 comments on commit 4237a05

Please sign in to comment.