From dc0db358abe19481e475e10c32149b53370f1a1c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 30 May 2024 05:57:31 +0200 Subject: Merging upstream version 1.72.1+dfsg1. Signed-off-by: Daniel Baumann --- ...er.range_loop.PreCodegen.after.panic-unwind.mir | 155 +++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir (limited to 'tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir') diff --git a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir new file mode 100644 index 000000000..3423c5d86 --- /dev/null +++ b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir @@ -0,0 +1,155 @@ +// MIR for `range_loop` after PreCodegen + +fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () { + debug slice => _1; + debug f => _2; + let mut _0: (); + let mut _3: usize; + let mut _4: std::ops::Range; + let mut _5: std::ops::Range; + let mut _6: &mut std::ops::Range; + let mut _12: std::option::Option; + let mut _15: isize; + let mut _17: usize; + let mut _18: bool; + let mut _20: &impl Fn(usize, &T); + let mut _21: (usize, &T); + let _22: (); + scope 1 { + debug iter => _5; + let _16: usize; + scope 2 { + debug i => _16; + let _19: &T; + scope 3 { + debug x => _19; + } + } + scope 5 (inlined iter::range::>::next) { + debug self => _6; + scope 6 (inlined as iter::range::RangeIteratorImpl>::spec_next) { + debug self => _6; + let mut _7: &usize; + let mut _8: &usize; + let mut _11: bool; + let _13: usize; + let mut _14: usize; + scope 7 { + debug old => _13; + scope 8 { + } + } + scope 9 (inlined cmp::impls::::lt) { + debug self => _7; + debug other => _8; + let mut _9: usize; + let mut _10: usize; + } + } + } + } + scope 4 (inlined as IntoIterator>::into_iter) { + debug self => _4; + } + + bb0: { + StorageLive(_3); + _3 = Len((*_1)); + _4 = std::ops::Range:: { start: const 0_usize, end: move _3 }; + StorageDead(_3); + StorageLive(_5); + _5 = move _4; + goto -> bb1; + } + + bb1: { + StorageLive(_12); + _6 = &mut _5; + StorageLive(_13); + StorageLive(_11); + StorageLive(_7); + _7 = &((*_6).0: usize); + StorageLive(_8); + _8 = &((*_6).1: usize); + StorageLive(_9); + _9 = (*_7); + StorageLive(_10); + _10 = (*_8); + _11 = Lt(move _9, move _10); + StorageDead(_10); + StorageDead(_9); + StorageDead(_8); + StorageDead(_7); + switchInt(move _11) -> [0: bb2, otherwise: bb3]; + } + + bb2: { + _12 = Option::::None; + goto -> bb5; + } + + bb3: { + _13 = ((*_6).0: usize); + StorageLive(_14); + _14 = ::forward_unchecked(_13, const 1_usize) -> [return: bb4, unwind: bb12]; + } + + bb4: { + ((*_6).0: usize) = move _14; + StorageDead(_14); + _12 = Option::::Some(_13); + goto -> bb5; + } + + bb5: { + StorageDead(_11); + StorageDead(_13); + _15 = discriminant(_12); + switchInt(move _15) -> [0: bb6, 1: bb8, otherwise: bb11]; + } + + bb6: { + StorageDead(_12); + StorageDead(_5); + drop(_2) -> [return: bb7, unwind continue]; + } + + bb7: { + return; + } + + bb8: { + _16 = ((_12 as Some).0: usize); + _17 = Len((*_1)); + _18 = Lt(_16, _17); + assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, _16) -> [success: bb9, unwind: bb12]; + } + + bb9: { + _19 = &(*_1)[_16]; + StorageLive(_20); + _20 = &_2; + StorageLive(_21); + _21 = (_16, _19); + _22 = >::call(move _20, move _21) -> [return: bb10, unwind: bb12]; + } + + bb10: { + StorageDead(_21); + StorageDead(_20); + StorageDead(_12); + goto -> bb1; + } + + bb11: { + unreachable; + } + + bb12 (cleanup): { + drop(_2) -> [return: bb13, unwind terminate]; + } + + bb13 (cleanup): { + resume; + } +} -- cgit v1.2.3