about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_mir_transform')
-rw-r--r--compiler/rustc_mir_transform/src/add_call_guards.rs9
-rw-r--r--compiler/rustc_mir_transform/src/lib.rs1
2 files changed, 7 insertions, 3 deletions
diff --git a/compiler/rustc_mir_transform/src/add_call_guards.rs b/compiler/rustc_mir_transform/src/add_call_guards.rs
index bc335cee147..bacff287859 100644
--- a/compiler/rustc_mir_transform/src/add_call_guards.rs
+++ b/compiler/rustc_mir_transform/src/add_call_guards.rs
@@ -32,9 +32,12 @@ pub(super) use self::AddCallGuards::*;
 
 impl<'tcx> crate::MirPass<'tcx> for AddCallGuards {
     fn run_pass(&self, _tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
-        let mut pred_count: IndexVec<_, _> =
-            body.basic_blocks.predecessors().iter().map(|ps| ps.len()).collect();
-        pred_count[START_BLOCK] += 1;
+        let mut pred_count = IndexVec::from_elem(0u8, &body.basic_blocks);
+        for (_, data) in body.basic_blocks.iter_enumerated() {
+            for succ in data.terminator().successors() {
+                pred_count[succ] = pred_count[succ].saturating_add(1);
+            }
+        }
 
         // We need a place to store the new blocks generated
         let mut new_blocks = Vec::new();
diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs
index 739cee5d7f4..205d388f4fb 100644
--- a/compiler/rustc_mir_transform/src/lib.rs
+++ b/compiler/rustc_mir_transform/src/lib.rs
@@ -1,4 +1,5 @@
 // tidy-alphabetical-start
+#![cfg_attr(doc, recursion_limit = "256")] // FIXME(nnethercote): will be removed by #124141
 #![feature(array_windows)]
 #![feature(assert_matches)]
 #![feature(box_patterns)]