diff options
| author | bors <bors@rust-lang.org> | 2021-01-24 23:04:15 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-01-24 23:04:15 +0000 |
| commit | d3163e96553ae8cb1fca0e62084b124e8b98310b (patch) | |
| tree | 8f0e190a1dd178971317e5cab80cc9ea453d6dd9 /compiler/rustc_data_structures/src | |
| parent | 1d0d76f8dd4f5f6ecbeab575b87edaf1c9f56bb8 (diff) | |
| parent | 529f15f9b9c5bcd1d2a02e2fa74027a5c5a458de (diff) | |
| download | rust-d3163e96553ae8cb1fca0e62084b124e8b98310b.tar.gz rust-d3163e96553ae8cb1fca0e62084b124e8b98310b.zip | |
Auto merge of #81355 - jonas-schievink:rollup-vpaadij, r=jonas-schievink
Rollup of 14 pull requests Successful merges: - #75180 (Implement Error for &(impl Error)) - #78578 (Permit mutable references in all const contexts) - #79174 (Make std::future a re-export of core::future) - #79884 (Replace magic numbers with existing constants) - #80855 (Expand assert!(expr, args..) to include $crate for hygiene on 2021.) - #80933 (Fix sysroot option not being honored across rustc) - #81259 (Replace version_check dependency with own version parsing code) - #81264 (Add unstable option to control doctest run directory) - #81279 (Small refactor in typeck) - #81297 (Don't provide backend_optimization_level query for extern crates) - #81302 (Fix rendering of stabilization version for trait implementors) - #81310 (Do not mark unit variants as used when in path pattern) - #81320 (Make bad shlex parsing a pretty error) - #81338 (Clean up `dominators_given_rpo`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_data_structures/src')
| -rw-r--r-- | compiler/rustc_data_structures/src/graph/dominators/mod.rs | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/compiler/rustc_data_structures/src/graph/dominators/mod.rs b/compiler/rustc_data_structures/src/graph/dominators/mod.rs index 1cfbce2355e..ad62e3c9fc8 100644 --- a/compiler/rustc_data_structures/src/graph/dominators/mod.rs +++ b/compiler/rustc_data_structures/src/graph/dominators/mod.rs @@ -8,7 +8,6 @@ use super::iterate::reverse_post_order; use super::ControlFlowGraph; use rustc_index::vec::{Idx, IndexVec}; -use std::borrow::BorrowMut; use std::cmp::Ordering; #[cfg(test)] @@ -20,22 +19,17 @@ pub fn dominators<G: ControlFlowGraph>(graph: G) -> Dominators<G::Node> { dominators_given_rpo(graph, &rpo) } -fn dominators_given_rpo<G: ControlFlowGraph + BorrowMut<G>>( - mut graph: G, - rpo: &[G::Node], -) -> Dominators<G::Node> { - let start_node = graph.borrow().start_node(); +fn dominators_given_rpo<G: ControlFlowGraph>(graph: G, rpo: &[G::Node]) -> Dominators<G::Node> { + let start_node = graph.start_node(); assert_eq!(rpo[0], start_node); // compute the post order index (rank) for each node - let mut post_order_rank: IndexVec<G::Node, usize> = - (0..graph.borrow().num_nodes()).map(|_| 0).collect(); + let mut post_order_rank = IndexVec::from_elem_n(0, graph.num_nodes()); for (index, node) in rpo.iter().rev().cloned().enumerate() { post_order_rank[node] = index; } - let mut immediate_dominators: IndexVec<G::Node, Option<G::Node>> = - (0..graph.borrow().num_nodes()).map(|_| None).collect(); + let mut immediate_dominators = IndexVec::from_elem_n(None, graph.num_nodes()); immediate_dominators[start_node] = Some(start_node); let mut changed = true; @@ -44,7 +38,7 @@ fn dominators_given_rpo<G: ControlFlowGraph + BorrowMut<G>>( for &node in &rpo[1..] { let mut new_idom = None; - for pred in graph.borrow_mut().predecessors(node) { + for pred in graph.predecessors(node) { if immediate_dominators[pred].is_some() { // (*) dominators for `pred` have been calculated new_idom = Some(if let Some(new_idom) = new_idom { |
