diff options
Diffstat (limited to 'tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir')
-rw-r--r-- | tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir new file mode 100644 index 000000000..e4e1d052e --- /dev/null +++ b/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir @@ -0,0 +1,82 @@ +// MIR for `mapped` after PreCodegen + +fn mapped(_1: impl Iterator<Item = T>, _2: impl Fn(T) -> U) -> () { + debug iter => _1; + debug f => _2; + let mut _0: (); + let mut _3: std::iter::Map<impl Iterator<Item = T>, impl Fn(T) -> U>; + let mut _4: std::iter::Map<impl Iterator<Item = T>, impl Fn(T) -> U>; + let mut _5: std::iter::Map<impl Iterator<Item = T>, impl Fn(T) -> U>; + let mut _6: &mut std::iter::Map<impl Iterator<Item = T>, impl Fn(T) -> U>; + let mut _7: std::option::Option<U>; + let mut _8: isize; + let _10: (); + scope 1 { + debug iter => _5; + let _9: U; + scope 2 { + debug x => _9; + } + } + scope 3 (inlined <Map<impl Iterator<Item = T>, impl Fn(T) -> U> as IntoIterator>::into_iter) { + debug self => _3; + } + + bb0: { + StorageLive(_4); + StorageLive(_3); + _3 = <impl Iterator<Item = T> as Iterator>::map::<U, impl Fn(T) -> U>(move _1, move _2) -> [return: bb1, unwind continue]; + } + + bb1: { + _4 = move _3; + StorageDead(_3); + StorageLive(_5); + _5 = move _4; + goto -> bb2; + } + + bb2: { + StorageLive(_7); + _6 = &mut _5; + _7 = <Map<impl Iterator<Item = T>, impl Fn(T) -> U> as Iterator>::next(_6) -> [return: bb3, unwind: bb9]; + } + + bb3: { + _8 = discriminant(_7); + switchInt(move _8) -> [0: bb4, 1: bb6, otherwise: bb8]; + } + + bb4: { + StorageDead(_7); + drop(_5) -> [return: bb5, unwind continue]; + } + + bb5: { + StorageDead(_5); + StorageDead(_4); + return; + } + + bb6: { + _9 = move ((_7 as Some).0: U); + _10 = opaque::<U>(move _9) -> [return: bb7, unwind: bb9]; + } + + bb7: { + StorageDead(_7); + goto -> bb2; + } + + bb8: { + unreachable; + } + + bb9 (cleanup): { + drop(_5) -> [return: bb10, unwind terminate]; + } + + bb10 (cleanup): { + resume; + } +} |