From: Mark Rousskov Date: Sat, 8 May 2021 01:00:03 +0000 (-0400) Subject: Avoid predecessors having Drop impls X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=0367e24f944e5e3241a548ca2e9472f24cab3566;p=rust.git Avoid predecessors having Drop impls --- diff --git a/compiler/rustc_middle/src/mir/mod.rs b/compiler/rustc_middle/src/mir/mod.rs index 252b5fc70de..de0c4f2e30e 100644 --- a/compiler/rustc_middle/src/mir/mod.rs +++ b/compiler/rustc_middle/src/mir/mod.rs @@ -461,7 +461,7 @@ pub fn terminator_loc(&self, bb: BasicBlock) -> Location { } #[inline] - pub fn predecessors(&self) -> impl std::ops::Deref + '_ { + pub fn predecessors(&self) -> &Predecessors { self.predecessor_cache.compute(&self.basic_blocks) } @@ -2815,13 +2815,13 @@ impl<'a, 'b> graph::GraphSuccessors<'b> for Body<'a> { impl graph::GraphPredecessors<'graph> for Body<'tcx> { type Item = BasicBlock; - type Iter = smallvec::IntoIter<[BasicBlock; 4]>; + type Iter = std::iter::Copied>; } impl graph::WithPredecessors for Body<'tcx> { #[inline] fn predecessors(&self, node: Self::Node) -> >::Iter { - self.predecessors()[node].clone().into_iter() + self.predecessors()[node].iter().copied() } } diff --git a/compiler/rustc_mir/src/transform/coverage/graph.rs b/compiler/rustc_mir/src/transform/coverage/graph.rs index 6f5fa858e25..0521f507ec7 100644 --- a/compiler/rustc_mir/src/transform/coverage/graph.rs +++ b/compiler/rustc_mir/src/transform/coverage/graph.rs @@ -269,13 +269,13 @@ fn successors(&self, node: Self::Node) -> >::Iter { impl graph::GraphPredecessors<'graph> for CoverageGraph { type Item = BasicCoverageBlock; - type Iter = std::vec::IntoIter; + type Iter = std::iter::Copied>; } impl graph::WithPredecessors for CoverageGraph { #[inline] fn predecessors(&self, node: Self::Node) -> >::Iter { - self.predecessors[node].clone().into_iter() + self.predecessors[node].iter().copied() } }