Skip to content

Commit 529f15f

Browse files
Rollup merge of #81338 - bugadani:dominator-cleanup, r=davidtwco
Clean up `dominators_given_rpo`
2 parents 558b878 + f8416fa commit 529f15f

File tree

1 file changed

+5
-11
lines changed
  • compiler/rustc_data_structures/src/graph/dominators

1 file changed

+5
-11
lines changed

compiler/rustc_data_structures/src/graph/dominators/mod.rs

+5-11
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
use super::iterate::reverse_post_order;
99
use super::ControlFlowGraph;
1010
use rustc_index::vec::{Idx, IndexVec};
11-
use std::borrow::BorrowMut;
1211
use std::cmp::Ordering;
1312

1413
#[cfg(test)]
@@ -20,22 +19,17 @@ pub fn dominators<G: ControlFlowGraph>(graph: G) -> Dominators<G::Node> {
2019
dominators_given_rpo(graph, &rpo)
2120
}
2221

23-
fn dominators_given_rpo<G: ControlFlowGraph + BorrowMut<G>>(
24-
mut graph: G,
25-
rpo: &[G::Node],
26-
) -> Dominators<G::Node> {
27-
let start_node = graph.borrow().start_node();
22+
fn dominators_given_rpo<G: ControlFlowGraph>(graph: G, rpo: &[G::Node]) -> Dominators<G::Node> {
23+
let start_node = graph.start_node();
2824
assert_eq!(rpo[0], start_node);
2925

3026
// compute the post order index (rank) for each node
31-
let mut post_order_rank: IndexVec<G::Node, usize> =
32-
(0..graph.borrow().num_nodes()).map(|_| 0).collect();
27+
let mut post_order_rank = IndexVec::from_elem_n(0, graph.num_nodes());
3328
for (index, node) in rpo.iter().rev().cloned().enumerate() {
3429
post_order_rank[node] = index;
3530
}
3631

37-
let mut immediate_dominators: IndexVec<G::Node, Option<G::Node>> =
38-
(0..graph.borrow().num_nodes()).map(|_| None).collect();
32+
let mut immediate_dominators = IndexVec::from_elem_n(None, graph.num_nodes());
3933
immediate_dominators[start_node] = Some(start_node);
4034

4135
let mut changed = true;
@@ -44,7 +38,7 @@ fn dominators_given_rpo<G: ControlFlowGraph + BorrowMut<G>>(
4438

4539
for &node in &rpo[1..] {
4640
let mut new_idom = None;
47-
for pred in graph.borrow_mut().predecessors(node) {
41+
for pred in graph.predecessors(node) {
4842
if immediate_dominators[pred].is_some() {
4943
// (*) dominators for `pred` have been calculated
5044
new_idom = Some(if let Some(new_idom) = new_idom {

0 commit comments

Comments
 (0)