Bless mir-opt tests.
This commit is contained in:
parent
c535326537
commit
b542c5526f
@ -7,7 +7,8 @@
|
||||
let mut _2: std::option::Option<T>;
|
||||
+ scope 1 (inlined #[track_caller] Option::<T>::unwrap_unchecked) {
|
||||
+ debug self => _2;
|
||||
+ let mut _3: isize;
|
||||
+ let mut _3: &std::option::Option<T>;
|
||||
+ let mut _4: isize;
|
||||
+ scope 2 {
|
||||
+ debug val => _0;
|
||||
+ }
|
||||
@ -20,7 +21,7 @@
|
||||
+ }
|
||||
+ }
|
||||
+ scope 4 (inlined Option::<T>::is_some) {
|
||||
+ debug self => &_2;
|
||||
+ debug self => _3;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
@ -28,8 +29,9 @@
|
||||
StorageLive(_2);
|
||||
_2 = move _1;
|
||||
- _0 = Option::<T>::unwrap_unchecked(move _2) -> [return: bb1, unwind unreachable];
|
||||
+ _3 = discriminant(_2);
|
||||
+ switchInt(move _3) -> [1: bb2, otherwise: bb1];
|
||||
+ StorageLive(_3);
|
||||
+ _4 = discriminant(_2);
|
||||
+ switchInt(move _4) -> [1: bb2, otherwise: bb1];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
@ -38,6 +40,7 @@
|
||||
+
|
||||
+ bb2: {
|
||||
+ _0 = move ((_2 as Some).0: T);
|
||||
+ StorageDead(_3);
|
||||
StorageDead(_2);
|
||||
return;
|
||||
}
|
||||
|
@ -7,7 +7,8 @@
|
||||
let mut _2: std::option::Option<T>;
|
||||
+ scope 1 (inlined #[track_caller] Option::<T>::unwrap_unchecked) {
|
||||
+ debug self => _2;
|
||||
+ let mut _3: isize;
|
||||
+ let mut _3: &std::option::Option<T>;
|
||||
+ let mut _4: isize;
|
||||
+ scope 2 {
|
||||
+ debug val => _0;
|
||||
+ }
|
||||
@ -20,7 +21,7 @@
|
||||
+ }
|
||||
+ }
|
||||
+ scope 4 (inlined Option::<T>::is_some) {
|
||||
+ debug self => &_2;
|
||||
+ debug self => _3;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
@ -28,8 +29,9 @@
|
||||
StorageLive(_2);
|
||||
_2 = move _1;
|
||||
- _0 = Option::<T>::unwrap_unchecked(move _2) -> [return: bb1, unwind: bb2];
|
||||
+ _3 = discriminant(_2);
|
||||
+ switchInt(move _3) -> [1: bb2, otherwise: bb1];
|
||||
+ StorageLive(_3);
|
||||
+ _4 = discriminant(_2);
|
||||
+ switchInt(move _4) -> [1: bb2, otherwise: bb1];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
@ -42,6 +44,7 @@
|
||||
- resume;
|
||||
+ bb2: {
|
||||
+ _0 = move ((_2 as Some).0: T);
|
||||
+ StorageDead(_3);
|
||||
+ StorageDead(_2);
|
||||
+ return;
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ fn unwrap_unchecked(_1: Option<T>) -> T {
|
||||
scope 1 (inlined #[track_caller] Option::<T>::unwrap_unchecked) {
|
||||
debug self => _1;
|
||||
let mut _2: isize;
|
||||
let mut _3: &std::option::Option<T>;
|
||||
scope 2 {
|
||||
debug val => _0;
|
||||
}
|
||||
@ -18,17 +19,19 @@ fn unwrap_unchecked(_1: Option<T>) -> T {
|
||||
}
|
||||
}
|
||||
scope 4 (inlined Option::<T>::is_some) {
|
||||
debug self => &_1;
|
||||
debug self => _3;
|
||||
}
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_3);
|
||||
_2 = discriminant(_1);
|
||||
switchInt(move _2) -> [1: bb1, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_0 = move ((_1 as Some).0: T);
|
||||
StorageDead(_3);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ fn unwrap_unchecked(_1: Option<T>) -> T {
|
||||
scope 1 (inlined #[track_caller] Option::<T>::unwrap_unchecked) {
|
||||
debug self => _1;
|
||||
let mut _2: isize;
|
||||
let mut _3: &std::option::Option<T>;
|
||||
scope 2 {
|
||||
debug val => _0;
|
||||
}
|
||||
@ -18,17 +19,19 @@ fn unwrap_unchecked(_1: Option<T>) -> T {
|
||||
}
|
||||
}
|
||||
scope 4 (inlined Option::<T>::is_some) {
|
||||
debug self => &_1;
|
||||
debug self => _3;
|
||||
}
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_3);
|
||||
_2 = discriminant(_1);
|
||||
switchInt(move _2) -> [1: bb1, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_0 = move ((_1 as Some).0: T);
|
||||
StorageDead(_3);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -10,13 +10,14 @@ fn step_forward(_1: u32, _2: usize) -> u32 {
|
||||
let _3: std::option::Option<u32>;
|
||||
let mut _6: bool;
|
||||
let mut _7: u32;
|
||||
let mut _8: &std::option::Option<u32>;
|
||||
scope 2 {
|
||||
}
|
||||
scope 3 (inlined Option::<u32>::is_none) {
|
||||
debug self => &_3;
|
||||
debug self => _8;
|
||||
let mut _5: bool;
|
||||
scope 4 (inlined Option::<u32>::is_some) {
|
||||
debug self => &_3;
|
||||
debug self => _8;
|
||||
let mut _4: isize;
|
||||
}
|
||||
}
|
||||
@ -28,6 +29,7 @@ fn step_forward(_1: u32, _2: usize) -> u32 {
|
||||
|
||||
bb0: {
|
||||
StorageLive(_6);
|
||||
StorageLive(_8);
|
||||
StorageLive(_3);
|
||||
_3 = <u32 as Step>::forward_checked(_1, _2) -> [return: bb1, unwind continue];
|
||||
}
|
||||
@ -39,6 +41,7 @@ fn step_forward(_1: u32, _2: usize) -> u32 {
|
||||
_6 = Not(move _5);
|
||||
StorageDead(_5);
|
||||
StorageDead(_3);
|
||||
StorageDead(_8);
|
||||
switchInt(move _6) -> [0: bb3, otherwise: bb2];
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,7 @@ fn filter_mapped(_1: impl Iterator<Item = T>, _2: impl Fn(T) -> Option<U>) -> ()
|
||||
let mut _8: std::option::Option<U>;
|
||||
let mut _9: isize;
|
||||
let _11: ();
|
||||
let mut _12: &mut std::iter::FilterMap<impl Iterator<Item = T>, impl Fn(T) -> Option<U>>;
|
||||
scope 1 {
|
||||
debug iter => _5;
|
||||
let _10: U;
|
||||
@ -17,7 +18,7 @@ fn filter_mapped(_1: impl Iterator<Item = T>, _2: impl Fn(T) -> Option<U>) -> ()
|
||||
debug x => _10;
|
||||
}
|
||||
scope 4 (inlined <FilterMap<impl Iterator<Item = T>, impl Fn(T) -> Option<U>> as Iterator>::next) {
|
||||
debug self => &_5;
|
||||
debug self => _12;
|
||||
let mut _6: &mut impl Iterator<Item = T>;
|
||||
let mut _7: &mut impl Fn(T) -> Option<U>;
|
||||
}
|
||||
|
@ -4,95 +4,108 @@ fn int_range(_1: usize, _2: usize) -> () {
|
||||
debug start => _1;
|
||||
debug end => _2;
|
||||
let mut _0: ();
|
||||
let mut _3: usize;
|
||||
let mut _6: std::option::Option<usize>;
|
||||
let mut _9: isize;
|
||||
let _11: ();
|
||||
let mut _3: std::ops::Range<usize>;
|
||||
let mut _4: std::ops::Range<usize>;
|
||||
let mut _8: std::option::Option<usize>;
|
||||
let mut _11: isize;
|
||||
let _13: ();
|
||||
let mut _14: &mut std::ops::Range<usize>;
|
||||
scope 1 {
|
||||
debug iter => std::ops::Range<usize>{ .0 => _3, .1 => _2, };
|
||||
let _10: usize;
|
||||
debug iter => _4;
|
||||
let _12: usize;
|
||||
scope 2 {
|
||||
debug i => _10;
|
||||
debug i => _12;
|
||||
}
|
||||
scope 4 (inlined iter::range::<impl Iterator for std::ops::Range<usize>>::next) {
|
||||
debug self => &std::ops::Range<usize>{ .0 => _3, .1 => _2, };
|
||||
debug self => _14;
|
||||
scope 5 (inlined <std::ops::Range<usize> as iter::range::RangeIteratorImpl>::spec_next) {
|
||||
debug self => &std::ops::Range<usize>{ .0 => _3, .1 => _2, };
|
||||
let mut _5: bool;
|
||||
let _7: usize;
|
||||
let mut _8: usize;
|
||||
debug self => _14;
|
||||
let mut _7: bool;
|
||||
let _9: usize;
|
||||
let mut _10: usize;
|
||||
let mut _15: &usize;
|
||||
let mut _16: &usize;
|
||||
scope 6 {
|
||||
debug old => _7;
|
||||
debug old => _9;
|
||||
scope 7 {
|
||||
}
|
||||
}
|
||||
scope 8 (inlined cmp::impls::<impl PartialOrd for usize>::lt) {
|
||||
debug self => &_3;
|
||||
debug other => &_2;
|
||||
let mut _4: usize;
|
||||
debug self => _15;
|
||||
debug other => _16;
|
||||
let mut _5: usize;
|
||||
let mut _6: usize;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope 3 (inlined <std::ops::Range<usize> as IntoIterator>::into_iter) {
|
||||
debug self => std::ops::Range<usize>{ .0 => _1, .1 => _2, };
|
||||
debug self => _3;
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_3);
|
||||
_3 = _1;
|
||||
_3 = std::ops::Range::<usize> { start: _1, end: _2 };
|
||||
StorageLive(_4);
|
||||
_4 = move _3;
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_6);
|
||||
StorageLive(_8);
|
||||
StorageLive(_9);
|
||||
StorageLive(_7);
|
||||
StorageLive(_15);
|
||||
StorageLive(_16);
|
||||
StorageLive(_5);
|
||||
StorageLive(_4);
|
||||
_4 = _3;
|
||||
_5 = Lt(move _4, _2);
|
||||
StorageDead(_4);
|
||||
switchInt(move _5) -> [0: bb2, otherwise: bb3];
|
||||
_5 = (_4.0: usize);
|
||||
StorageLive(_6);
|
||||
_6 = (_4.1: usize);
|
||||
_7 = Lt(move _5, move _6);
|
||||
StorageDead(_6);
|
||||
StorageDead(_5);
|
||||
StorageDead(_16);
|
||||
StorageDead(_15);
|
||||
switchInt(move _7) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_6 = Option::<usize>::None;
|
||||
_8 = Option::<usize>::None;
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_7 = _3;
|
||||
StorageLive(_8);
|
||||
_8 = <usize as Step>::forward_unchecked(_7, const 1_usize) -> [return: bb4, unwind continue];
|
||||
_9 = (_4.0: usize);
|
||||
StorageLive(_10);
|
||||
_10 = <usize as Step>::forward_unchecked(_9, const 1_usize) -> [return: bb4, unwind continue];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_3 = move _8;
|
||||
StorageDead(_8);
|
||||
_6 = Option::<usize>::Some(_7);
|
||||
(_4.0: usize) = move _10;
|
||||
StorageDead(_10);
|
||||
_8 = Option::<usize>::Some(_9);
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
StorageDead(_5);
|
||||
StorageDead(_7);
|
||||
_9 = discriminant(_6);
|
||||
switchInt(move _9) -> [0: bb6, 1: bb7, otherwise: bb9];
|
||||
StorageDead(_9);
|
||||
_11 = discriminant(_8);
|
||||
switchInt(move _11) -> [0: bb6, 1: bb7, otherwise: bb9];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
StorageDead(_6);
|
||||
StorageDead(_3);
|
||||
StorageDead(_8);
|
||||
StorageDead(_4);
|
||||
return;
|
||||
}
|
||||
|
||||
bb7: {
|
||||
_10 = ((_6 as Some).0: usize);
|
||||
_11 = opaque::<usize>(move _10) -> [return: bb8, unwind continue];
|
||||
_12 = ((_8 as Some).0: usize);
|
||||
_13 = opaque::<usize>(move _12) -> [return: bb8, unwind continue];
|
||||
}
|
||||
|
||||
bb8: {
|
||||
StorageDead(_6);
|
||||
StorageDead(_8);
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
|
@ -5,87 +5,100 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
|
||||
debug end => _2;
|
||||
debug f => _3;
|
||||
let mut _0: ();
|
||||
let mut _4: u32;
|
||||
let mut _7: std::option::Option<u32>;
|
||||
let mut _10: isize;
|
||||
let mut _12: &impl Fn(u32);
|
||||
let mut _13: (u32,);
|
||||
let _14: ();
|
||||
let mut _4: std::ops::Range<u32>;
|
||||
let mut _5: std::ops::Range<u32>;
|
||||
let mut _9: std::option::Option<u32>;
|
||||
let mut _12: isize;
|
||||
let mut _14: &impl Fn(u32);
|
||||
let mut _15: (u32,);
|
||||
let _16: ();
|
||||
let mut _17: &mut std::ops::Range<u32>;
|
||||
scope 1 {
|
||||
debug iter => std::ops::Range<u32>{ .0 => _4, .1 => _2, };
|
||||
let _11: u32;
|
||||
debug iter => _5;
|
||||
let _13: u32;
|
||||
scope 2 {
|
||||
debug x => _11;
|
||||
debug x => _13;
|
||||
}
|
||||
scope 4 (inlined iter::range::<impl Iterator for std::ops::Range<u32>>::next) {
|
||||
debug self => &std::ops::Range<u32>{ .0 => _4, .1 => _2, };
|
||||
debug self => _17;
|
||||
scope 5 (inlined <std::ops::Range<u32> as iter::range::RangeIteratorImpl>::spec_next) {
|
||||
debug self => &std::ops::Range<u32>{ .0 => _4, .1 => _2, };
|
||||
let mut _6: bool;
|
||||
let _8: u32;
|
||||
let mut _9: u32;
|
||||
debug self => _17;
|
||||
let mut _8: bool;
|
||||
let _10: u32;
|
||||
let mut _11: u32;
|
||||
let mut _18: &u32;
|
||||
let mut _19: &u32;
|
||||
scope 6 {
|
||||
debug old => _8;
|
||||
debug old => _10;
|
||||
scope 7 {
|
||||
}
|
||||
}
|
||||
scope 8 (inlined cmp::impls::<impl PartialOrd for u32>::lt) {
|
||||
debug self => &_4;
|
||||
debug other => &_2;
|
||||
let mut _5: u32;
|
||||
debug self => _18;
|
||||
debug other => _19;
|
||||
let mut _6: u32;
|
||||
let mut _7: u32;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope 3 (inlined <std::ops::Range<u32> as IntoIterator>::into_iter) {
|
||||
debug self => std::ops::Range<u32>{ .0 => _1, .1 => _2, };
|
||||
debug self => _4;
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_4);
|
||||
_4 = _1;
|
||||
_4 = std::ops::Range::<u32> { start: _1, end: _2 };
|
||||
StorageLive(_5);
|
||||
_5 = move _4;
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_7);
|
||||
StorageLive(_9);
|
||||
StorageLive(_10);
|
||||
StorageLive(_8);
|
||||
StorageLive(_18);
|
||||
StorageLive(_19);
|
||||
StorageLive(_6);
|
||||
StorageLive(_5);
|
||||
_5 = _4;
|
||||
_6 = Lt(move _5, _2);
|
||||
StorageDead(_5);
|
||||
switchInt(move _6) -> [0: bb2, otherwise: bb3];
|
||||
_6 = (_5.0: u32);
|
||||
StorageLive(_7);
|
||||
_7 = (_5.1: u32);
|
||||
_8 = Lt(move _6, move _7);
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
StorageDead(_19);
|
||||
StorageDead(_18);
|
||||
switchInt(move _8) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_7 = Option::<u32>::None;
|
||||
_9 = Option::<u32>::None;
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_8 = _4;
|
||||
StorageLive(_9);
|
||||
_9 = <u32 as Step>::forward_unchecked(_8, const 1_usize) -> [return: bb4, unwind unreachable];
|
||||
_10 = (_5.0: u32);
|
||||
StorageLive(_11);
|
||||
_11 = <u32 as Step>::forward_unchecked(_10, const 1_usize) -> [return: bb4, unwind unreachable];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_4 = move _9;
|
||||
StorageDead(_9);
|
||||
_7 = Option::<u32>::Some(_8);
|
||||
(_5.0: u32) = move _11;
|
||||
StorageDead(_11);
|
||||
_9 = Option::<u32>::Some(_10);
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
StorageDead(_6);
|
||||
StorageDead(_8);
|
||||
_10 = discriminant(_7);
|
||||
switchInt(move _10) -> [0: bb6, 1: bb8, otherwise: bb10];
|
||||
StorageDead(_10);
|
||||
_12 = discriminant(_9);
|
||||
switchInt(move _12) -> [0: bb6, 1: bb8, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_4);
|
||||
StorageDead(_9);
|
||||
StorageDead(_5);
|
||||
drop(_3) -> [return: bb7, unwind unreachable];
|
||||
}
|
||||
|
||||
@ -94,18 +107,18 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_11 = ((_7 as Some).0: u32);
|
||||
StorageLive(_12);
|
||||
_12 = &_3;
|
||||
StorageLive(_13);
|
||||
_13 = (_11,);
|
||||
_14 = <impl Fn(u32) as Fn<(u32,)>>::call(move _12, move _13) -> [return: bb9, unwind unreachable];
|
||||
_13 = ((_9 as Some).0: u32);
|
||||
StorageLive(_14);
|
||||
_14 = &_3;
|
||||
StorageLive(_15);
|
||||
_15 = (_13,);
|
||||
_16 = <impl Fn(u32) as Fn<(u32,)>>::call(move _14, move _15) -> [return: bb9, unwind unreachable];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
StorageDead(_13);
|
||||
StorageDead(_12);
|
||||
StorageDead(_7);
|
||||
StorageDead(_15);
|
||||
StorageDead(_14);
|
||||
StorageDead(_9);
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
|
@ -5,87 +5,100 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
|
||||
debug end => _2;
|
||||
debug f => _3;
|
||||
let mut _0: ();
|
||||
let mut _4: u32;
|
||||
let mut _7: std::option::Option<u32>;
|
||||
let mut _10: isize;
|
||||
let mut _12: &impl Fn(u32);
|
||||
let mut _13: (u32,);
|
||||
let _14: ();
|
||||
let mut _4: std::ops::Range<u32>;
|
||||
let mut _5: std::ops::Range<u32>;
|
||||
let mut _9: std::option::Option<u32>;
|
||||
let mut _12: isize;
|
||||
let mut _14: &impl Fn(u32);
|
||||
let mut _15: (u32,);
|
||||
let _16: ();
|
||||
let mut _17: &mut std::ops::Range<u32>;
|
||||
scope 1 {
|
||||
debug iter => std::ops::Range<u32>{ .0 => _4, .1 => _2, };
|
||||
let _11: u32;
|
||||
debug iter => _5;
|
||||
let _13: u32;
|
||||
scope 2 {
|
||||
debug x => _11;
|
||||
debug x => _13;
|
||||
}
|
||||
scope 4 (inlined iter::range::<impl Iterator for std::ops::Range<u32>>::next) {
|
||||
debug self => &std::ops::Range<u32>{ .0 => _4, .1 => _2, };
|
||||
debug self => _17;
|
||||
scope 5 (inlined <std::ops::Range<u32> as iter::range::RangeIteratorImpl>::spec_next) {
|
||||
debug self => &std::ops::Range<u32>{ .0 => _4, .1 => _2, };
|
||||
let mut _6: bool;
|
||||
let _8: u32;
|
||||
let mut _9: u32;
|
||||
debug self => _17;
|
||||
let mut _8: bool;
|
||||
let _10: u32;
|
||||
let mut _11: u32;
|
||||
let mut _18: &u32;
|
||||
let mut _19: &u32;
|
||||
scope 6 {
|
||||
debug old => _8;
|
||||
debug old => _10;
|
||||
scope 7 {
|
||||
}
|
||||
}
|
||||
scope 8 (inlined cmp::impls::<impl PartialOrd for u32>::lt) {
|
||||
debug self => &_4;
|
||||
debug other => &_2;
|
||||
let mut _5: u32;
|
||||
debug self => _18;
|
||||
debug other => _19;
|
||||
let mut _6: u32;
|
||||
let mut _7: u32;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope 3 (inlined <std::ops::Range<u32> as IntoIterator>::into_iter) {
|
||||
debug self => std::ops::Range<u32>{ .0 => _1, .1 => _2, };
|
||||
debug self => _4;
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_4);
|
||||
_4 = _1;
|
||||
_4 = std::ops::Range::<u32> { start: _1, end: _2 };
|
||||
StorageLive(_5);
|
||||
_5 = move _4;
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_7);
|
||||
StorageLive(_9);
|
||||
StorageLive(_10);
|
||||
StorageLive(_8);
|
||||
StorageLive(_18);
|
||||
StorageLive(_19);
|
||||
StorageLive(_6);
|
||||
StorageLive(_5);
|
||||
_5 = _4;
|
||||
_6 = Lt(move _5, _2);
|
||||
StorageDead(_5);
|
||||
switchInt(move _6) -> [0: bb2, otherwise: bb3];
|
||||
_6 = (_5.0: u32);
|
||||
StorageLive(_7);
|
||||
_7 = (_5.1: u32);
|
||||
_8 = Lt(move _6, move _7);
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
StorageDead(_19);
|
||||
StorageDead(_18);
|
||||
switchInt(move _8) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_7 = Option::<u32>::None;
|
||||
_9 = Option::<u32>::None;
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_8 = _4;
|
||||
StorageLive(_9);
|
||||
_9 = <u32 as Step>::forward_unchecked(_8, const 1_usize) -> [return: bb4, unwind: bb11];
|
||||
_10 = (_5.0: u32);
|
||||
StorageLive(_11);
|
||||
_11 = <u32 as Step>::forward_unchecked(_10, const 1_usize) -> [return: bb4, unwind: bb11];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_4 = move _9;
|
||||
StorageDead(_9);
|
||||
_7 = Option::<u32>::Some(_8);
|
||||
(_5.0: u32) = move _11;
|
||||
StorageDead(_11);
|
||||
_9 = Option::<u32>::Some(_10);
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
StorageDead(_6);
|
||||
StorageDead(_8);
|
||||
_10 = discriminant(_7);
|
||||
switchInt(move _10) -> [0: bb6, 1: bb8, otherwise: bb10];
|
||||
StorageDead(_10);
|
||||
_12 = discriminant(_9);
|
||||
switchInt(move _12) -> [0: bb6, 1: bb8, otherwise: bb10];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_4);
|
||||
StorageDead(_9);
|
||||
StorageDead(_5);
|
||||
drop(_3) -> [return: bb7, unwind continue];
|
||||
}
|
||||
|
||||
@ -94,18 +107,18 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_11 = ((_7 as Some).0: u32);
|
||||
StorageLive(_12);
|
||||
_12 = &_3;
|
||||
StorageLive(_13);
|
||||
_13 = (_11,);
|
||||
_14 = <impl Fn(u32) as Fn<(u32,)>>::call(move _12, move _13) -> [return: bb9, unwind: bb11];
|
||||
_13 = ((_9 as Some).0: u32);
|
||||
StorageLive(_14);
|
||||
_14 = &_3;
|
||||
StorageLive(_15);
|
||||
_15 = (_13,);
|
||||
_16 = <impl Fn(u32) as Fn<(u32,)>>::call(move _14, move _15) -> [return: bb9, unwind: bb11];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
StorageDead(_13);
|
||||
StorageDead(_12);
|
||||
StorageDead(_7);
|
||||
StorageDead(_15);
|
||||
StorageDead(_14);
|
||||
StorageDead(_9);
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
|
@ -10,14 +10,16 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
|
||||
let mut _4: bool;
|
||||
let _5: u32;
|
||||
let mut _6: u32;
|
||||
let mut _7: &u32;
|
||||
let mut _8: &u32;
|
||||
scope 3 {
|
||||
debug old => _5;
|
||||
scope 4 {
|
||||
}
|
||||
}
|
||||
scope 5 (inlined cmp::impls::<impl PartialOrd for u32>::lt) {
|
||||
debug self => &((*_1).0: u32);
|
||||
debug other => &((*_1).1: u32);
|
||||
debug self => _7;
|
||||
debug other => _8;
|
||||
let mut _2: u32;
|
||||
let mut _3: u32;
|
||||
}
|
||||
@ -27,6 +29,8 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
|
||||
bb0: {
|
||||
StorageLive(_5);
|
||||
StorageLive(_4);
|
||||
StorageLive(_7);
|
||||
StorageLive(_8);
|
||||
StorageLive(_2);
|
||||
_2 = ((*_1).0: u32);
|
||||
StorageLive(_3);
|
||||
@ -34,6 +38,8 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
|
||||
_4 = Lt(move _2, move _3);
|
||||
StorageDead(_3);
|
||||
StorageDead(_2);
|
||||
StorageDead(_8);
|
||||
StorageDead(_7);
|
||||
switchInt(move _4) -> [0: bb1, otherwise: bb2];
|
||||
}
|
||||
|
||||
|
@ -10,14 +10,16 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
|
||||
let mut _4: bool;
|
||||
let _5: u32;
|
||||
let mut _6: u32;
|
||||
let mut _7: &u32;
|
||||
let mut _8: &u32;
|
||||
scope 3 {
|
||||
debug old => _5;
|
||||
scope 4 {
|
||||
}
|
||||
}
|
||||
scope 5 (inlined cmp::impls::<impl PartialOrd for u32>::lt) {
|
||||
debug self => &((*_1).0: u32);
|
||||
debug other => &((*_1).1: u32);
|
||||
debug self => _7;
|
||||
debug other => _8;
|
||||
let mut _2: u32;
|
||||
let mut _3: u32;
|
||||
}
|
||||
@ -27,6 +29,8 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
|
||||
bb0: {
|
||||
StorageLive(_5);
|
||||
StorageLive(_4);
|
||||
StorageLive(_7);
|
||||
StorageLive(_8);
|
||||
StorageLive(_2);
|
||||
_2 = ((*_1).0: u32);
|
||||
StorageLive(_3);
|
||||
@ -34,6 +38,8 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
|
||||
_4 = Lt(move _2, move _3);
|
||||
StorageDead(_3);
|
||||
StorageDead(_2);
|
||||
StorageDead(_8);
|
||||
StorageDead(_7);
|
||||
switchInt(move _4) -> [0: bb1, otherwise: bb2];
|
||||
}
|
||||
|
||||
|
@ -3,138 +3,206 @@
|
||||
fn variant_a::{closure#0}(_1: &mut [closure@$DIR/slice_filter.rs:7:25: 7:39], _2: &&(usize, usize, usize, usize)) -> bool {
|
||||
let mut _0: bool;
|
||||
let mut _3: &(usize, usize, usize, usize);
|
||||
let mut _4: &(usize, usize, usize, usize);
|
||||
let _4: &usize;
|
||||
let mut _5: &(usize, usize, usize, usize);
|
||||
let mut _6: &(usize, usize, usize, usize);
|
||||
let mut _9: bool;
|
||||
let mut _10: bool;
|
||||
let mut _13: bool;
|
||||
let _6: &usize;
|
||||
let mut _7: &(usize, usize, usize, usize);
|
||||
let _8: &usize;
|
||||
let mut _9: &(usize, usize, usize, usize);
|
||||
let _10: &usize;
|
||||
let _11: &usize;
|
||||
let mut _16: bool;
|
||||
let mut _17: bool;
|
||||
let mut _20: bool;
|
||||
let _18: &usize;
|
||||
let mut _23: bool;
|
||||
let _24: &usize;
|
||||
let mut _29: bool;
|
||||
let mut _30: bool;
|
||||
let _31: &usize;
|
||||
let mut _36: bool;
|
||||
let mut _37: &&usize;
|
||||
let mut _38: &&usize;
|
||||
let mut _39: &&usize;
|
||||
let mut _40: &&usize;
|
||||
let mut _41: &&usize;
|
||||
let mut _42: &&usize;
|
||||
let mut _43: &&usize;
|
||||
let mut _44: &&usize;
|
||||
scope 1 {
|
||||
debug a => &((*_3).0: usize);
|
||||
debug b => &((*_4).1: usize);
|
||||
debug c => &((*_5).2: usize);
|
||||
debug d => &((*_6).3: usize);
|
||||
debug a => _4;
|
||||
debug b => _6;
|
||||
debug c => _8;
|
||||
debug d => _10;
|
||||
scope 2 (inlined cmp::impls::<impl PartialOrd for &usize>::le) {
|
||||
debug self => &&((*_3).0: usize);
|
||||
debug other => &&((*_5).2: usize);
|
||||
debug self => _37;
|
||||
debug other => _38;
|
||||
let mut _12: &usize;
|
||||
let mut _13: &usize;
|
||||
scope 3 (inlined cmp::impls::<impl PartialOrd for usize>::le) {
|
||||
debug self => &((*_3).0: usize);
|
||||
debug other => &((*_5).2: usize);
|
||||
let mut _7: usize;
|
||||
let mut _8: usize;
|
||||
}
|
||||
}
|
||||
scope 4 (inlined cmp::impls::<impl PartialOrd for &usize>::le) {
|
||||
debug self => &&((*_5).2: usize);
|
||||
debug other => &&((*_3).0: usize);
|
||||
scope 5 (inlined cmp::impls::<impl PartialOrd for usize>::le) {
|
||||
debug self => &((*_5).2: usize);
|
||||
debug other => &((*_3).0: usize);
|
||||
debug self => _12;
|
||||
debug other => _13;
|
||||
let mut _14: usize;
|
||||
let mut _15: usize;
|
||||
}
|
||||
}
|
||||
scope 4 (inlined cmp::impls::<impl PartialOrd for &usize>::le) {
|
||||
debug self => _41;
|
||||
debug other => _42;
|
||||
let mut _25: &usize;
|
||||
let mut _26: &usize;
|
||||
scope 5 (inlined cmp::impls::<impl PartialOrd for usize>::le) {
|
||||
debug self => _25;
|
||||
debug other => _26;
|
||||
let mut _27: usize;
|
||||
let mut _28: usize;
|
||||
}
|
||||
}
|
||||
scope 6 (inlined cmp::impls::<impl PartialOrd for &usize>::le) {
|
||||
debug self => &&((*_6).3: usize);
|
||||
debug other => &&((*_4).1: usize);
|
||||
debug self => _39;
|
||||
debug other => _40;
|
||||
let mut _19: &usize;
|
||||
let mut _20: &usize;
|
||||
scope 7 (inlined cmp::impls::<impl PartialOrd for usize>::le) {
|
||||
debug self => &((*_6).3: usize);
|
||||
debug other => &((*_4).1: usize);
|
||||
let mut _11: usize;
|
||||
let mut _12: usize;
|
||||
debug self => _19;
|
||||
debug other => _20;
|
||||
let mut _21: usize;
|
||||
let mut _22: usize;
|
||||
}
|
||||
}
|
||||
scope 8 (inlined cmp::impls::<impl PartialOrd for &usize>::le) {
|
||||
debug self => &&((*_4).1: usize);
|
||||
debug other => &&((*_6).3: usize);
|
||||
debug self => _43;
|
||||
debug other => _44;
|
||||
let mut _32: &usize;
|
||||
let mut _33: &usize;
|
||||
scope 9 (inlined cmp::impls::<impl PartialOrd for usize>::le) {
|
||||
debug self => &((*_4).1: usize);
|
||||
debug other => &((*_6).3: usize);
|
||||
let mut _18: usize;
|
||||
let mut _19: usize;
|
||||
debug self => _32;
|
||||
debug other => _33;
|
||||
let mut _34: usize;
|
||||
let mut _35: usize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_4);
|
||||
_3 = deref_copy (*_2);
|
||||
_4 = deref_copy (*_2);
|
||||
_4 = &((*_3).0: usize);
|
||||
StorageLive(_6);
|
||||
_5 = deref_copy (*_2);
|
||||
_6 = deref_copy (*_2);
|
||||
StorageLive(_10);
|
||||
StorageLive(_9);
|
||||
StorageLive(_7);
|
||||
_7 = ((*_3).0: usize);
|
||||
_6 = &((*_5).1: usize);
|
||||
StorageLive(_8);
|
||||
_8 = ((*_5).2: usize);
|
||||
_9 = Le(move _7, move _8);
|
||||
StorageDead(_8);
|
||||
StorageDead(_7);
|
||||
switchInt(move _9) -> [0: bb1, otherwise: bb2];
|
||||
_7 = deref_copy (*_2);
|
||||
_8 = &((*_7).2: usize);
|
||||
StorageLive(_10);
|
||||
_9 = deref_copy (*_2);
|
||||
_10 = &((*_9).3: usize);
|
||||
StorageLive(_17);
|
||||
StorageLive(_16);
|
||||
StorageLive(_37);
|
||||
StorageLive(_38);
|
||||
StorageLive(_11);
|
||||
_11 = _8;
|
||||
_12 = deref_copy _4;
|
||||
_13 = deref_copy _11;
|
||||
StorageLive(_14);
|
||||
_14 = (*_12);
|
||||
StorageLive(_15);
|
||||
_15 = (*_13);
|
||||
_16 = Le(move _14, move _15);
|
||||
StorageDead(_15);
|
||||
StorageDead(_14);
|
||||
StorageDead(_11);
|
||||
StorageDead(_38);
|
||||
StorageDead(_37);
|
||||
switchInt(move _16) -> [0: bb1, otherwise: bb2];
|
||||
}
|
||||
|
||||
bb1: {
|
||||
_10 = const false;
|
||||
_17 = const false;
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb2: {
|
||||
StorageLive(_13);
|
||||
StorageLive(_11);
|
||||
_11 = ((*_6).3: usize);
|
||||
StorageLive(_12);
|
||||
_12 = ((*_4).1: usize);
|
||||
_13 = Le(move _11, move _12);
|
||||
StorageDead(_12);
|
||||
StorageDead(_11);
|
||||
_10 = move _13;
|
||||
StorageLive(_23);
|
||||
StorageLive(_39);
|
||||
StorageLive(_40);
|
||||
StorageLive(_18);
|
||||
_18 = _6;
|
||||
_19 = deref_copy _10;
|
||||
_20 = deref_copy _18;
|
||||
StorageLive(_21);
|
||||
_21 = (*_19);
|
||||
StorageLive(_22);
|
||||
_22 = (*_20);
|
||||
_23 = Le(move _21, move _22);
|
||||
StorageDead(_22);
|
||||
StorageDead(_21);
|
||||
StorageDead(_18);
|
||||
StorageDead(_40);
|
||||
StorageDead(_39);
|
||||
_17 = move _23;
|
||||
goto -> bb3;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
StorageDead(_13);
|
||||
StorageDead(_9);
|
||||
switchInt(move _10) -> [0: bb4, otherwise: bb8];
|
||||
StorageDead(_23);
|
||||
StorageDead(_16);
|
||||
switchInt(move _17) -> [0: bb4, otherwise: bb8];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
StorageLive(_17);
|
||||
StorageLive(_16);
|
||||
StorageLive(_14);
|
||||
_14 = ((*_5).2: usize);
|
||||
StorageLive(_15);
|
||||
_15 = ((*_3).0: usize);
|
||||
_16 = Le(move _14, move _15);
|
||||
StorageDead(_15);
|
||||
StorageDead(_14);
|
||||
switchInt(move _16) -> [0: bb5, otherwise: bb6];
|
||||
StorageLive(_30);
|
||||
StorageLive(_29);
|
||||
StorageLive(_41);
|
||||
StorageLive(_42);
|
||||
StorageLive(_24);
|
||||
_24 = _4;
|
||||
_25 = deref_copy _8;
|
||||
_26 = deref_copy _24;
|
||||
StorageLive(_27);
|
||||
_27 = (*_25);
|
||||
StorageLive(_28);
|
||||
_28 = (*_26);
|
||||
_29 = Le(move _27, move _28);
|
||||
StorageDead(_28);
|
||||
StorageDead(_27);
|
||||
StorageDead(_24);
|
||||
StorageDead(_42);
|
||||
StorageDead(_41);
|
||||
switchInt(move _29) -> [0: bb5, otherwise: bb6];
|
||||
}
|
||||
|
||||
bb5: {
|
||||
_17 = const false;
|
||||
_30 = const false;
|
||||
goto -> bb7;
|
||||
}
|
||||
|
||||
bb6: {
|
||||
StorageLive(_20);
|
||||
StorageLive(_18);
|
||||
_18 = ((*_4).1: usize);
|
||||
StorageLive(_19);
|
||||
_19 = ((*_6).3: usize);
|
||||
_20 = Le(move _18, move _19);
|
||||
StorageDead(_19);
|
||||
StorageDead(_18);
|
||||
_17 = move _20;
|
||||
StorageLive(_36);
|
||||
StorageLive(_43);
|
||||
StorageLive(_44);
|
||||
StorageLive(_31);
|
||||
_31 = _10;
|
||||
_32 = deref_copy _6;
|
||||
_33 = deref_copy _31;
|
||||
StorageLive(_34);
|
||||
_34 = (*_32);
|
||||
StorageLive(_35);
|
||||
_35 = (*_33);
|
||||
_36 = Le(move _34, move _35);
|
||||
StorageDead(_35);
|
||||
StorageDead(_34);
|
||||
StorageDead(_31);
|
||||
StorageDead(_44);
|
||||
StorageDead(_43);
|
||||
_30 = move _36;
|
||||
goto -> bb7;
|
||||
}
|
||||
|
||||
bb7: {
|
||||
StorageDead(_20);
|
||||
StorageDead(_16);
|
||||
_0 = move _17;
|
||||
StorageDead(_36);
|
||||
StorageDead(_29);
|
||||
_0 = move _30;
|
||||
goto -> bb9;
|
||||
}
|
||||
|
||||
@ -144,8 +212,12 @@ fn variant_a::{closure#0}(_1: &mut [closure@$DIR/slice_filter.rs:7:25: 7:39], _2
|
||||
}
|
||||
|
||||
bb9: {
|
||||
StorageDead(_30);
|
||||
StorageDead(_17);
|
||||
StorageDead(_10);
|
||||
StorageDead(_8);
|
||||
StorageDead(_6);
|
||||
StorageDead(_4);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -5,95 +5,109 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
|
||||
debug f => _2;
|
||||
let mut _0: ();
|
||||
let mut _3: usize;
|
||||
let mut _4: usize;
|
||||
let mut _7: std::option::Option<usize>;
|
||||
let mut _10: isize;
|
||||
let mut _12: usize;
|
||||
let mut _13: bool;
|
||||
let mut _15: &impl Fn(usize, &T);
|
||||
let mut _16: (usize, &T);
|
||||
let _17: ();
|
||||
let mut _18: usize;
|
||||
let mut _4: std::ops::Range<usize>;
|
||||
let mut _5: std::ops::Range<usize>;
|
||||
let mut _9: std::option::Option<usize>;
|
||||
let mut _12: isize;
|
||||
let mut _14: usize;
|
||||
let mut _15: bool;
|
||||
let mut _17: &impl Fn(usize, &T);
|
||||
let mut _18: (usize, &T);
|
||||
let _19: ();
|
||||
let mut _20: &mut std::ops::Range<usize>;
|
||||
scope 1 {
|
||||
debug iter => std::ops::Range<usize>{ .0 => _4, .1 => _3, };
|
||||
let _11: usize;
|
||||
debug iter => _5;
|
||||
let _13: usize;
|
||||
scope 2 {
|
||||
debug i => _11;
|
||||
let _14: &T;
|
||||
debug i => _13;
|
||||
let _16: &T;
|
||||
scope 3 {
|
||||
debug x => _14;
|
||||
debug x => _16;
|
||||
}
|
||||
}
|
||||
scope 5 (inlined iter::range::<impl Iterator for std::ops::Range<usize>>::next) {
|
||||
debug self => &std::ops::Range<usize>{ .0 => _4, .1 => _3, };
|
||||
debug self => _20;
|
||||
scope 6 (inlined <std::ops::Range<usize> as iter::range::RangeIteratorImpl>::spec_next) {
|
||||
debug self => &std::ops::Range<usize>{ .0 => _4, .1 => _3, };
|
||||
let mut _6: bool;
|
||||
let _8: usize;
|
||||
let mut _9: usize;
|
||||
debug self => _20;
|
||||
let mut _8: bool;
|
||||
let _10: usize;
|
||||
let mut _11: usize;
|
||||
let mut _21: &usize;
|
||||
let mut _22: &usize;
|
||||
scope 7 {
|
||||
debug old => _8;
|
||||
debug old => _10;
|
||||
scope 8 {
|
||||
}
|
||||
}
|
||||
scope 9 (inlined cmp::impls::<impl PartialOrd for usize>::lt) {
|
||||
debug self => &_4;
|
||||
debug other => &_3;
|
||||
let mut _5: usize;
|
||||
debug self => _21;
|
||||
debug other => _22;
|
||||
let mut _6: usize;
|
||||
let mut _7: usize;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope 4 (inlined <std::ops::Range<usize> as IntoIterator>::into_iter) {
|
||||
debug self => std::ops::Range<usize>{ .0 => _18, .1 => _3, };
|
||||
debug self => _4;
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_3);
|
||||
_3 = Len((*_1));
|
||||
StorageLive(_4);
|
||||
_4 = const 0_usize;
|
||||
_4 = std::ops::Range::<usize> { start: const 0_usize, end: move _3 };
|
||||
StorageDead(_3);
|
||||
StorageLive(_5);
|
||||
_5 = move _4;
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_7);
|
||||
StorageLive(_9);
|
||||
StorageLive(_10);
|
||||
StorageLive(_8);
|
||||
StorageLive(_21);
|
||||
StorageLive(_22);
|
||||
StorageLive(_6);
|
||||
StorageLive(_5);
|
||||
_5 = _4;
|
||||
_6 = Lt(move _5, _3);
|
||||
StorageDead(_5);
|
||||
switchInt(move _6) -> [0: bb2, otherwise: bb3];
|
||||
_6 = (_5.0: usize);
|
||||
StorageLive(_7);
|
||||
_7 = (_5.1: usize);
|
||||
_8 = Lt(move _6, move _7);
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
StorageDead(_22);
|
||||
StorageDead(_21);
|
||||
switchInt(move _8) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_7 = Option::<usize>::None;
|
||||
_9 = Option::<usize>::None;
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_8 = _4;
|
||||
StorageLive(_9);
|
||||
_9 = <usize as Step>::forward_unchecked(_8, const 1_usize) -> [return: bb4, unwind unreachable];
|
||||
_10 = (_5.0: usize);
|
||||
StorageLive(_11);
|
||||
_11 = <usize as Step>::forward_unchecked(_10, const 1_usize) -> [return: bb4, unwind unreachable];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_4 = move _9;
|
||||
StorageDead(_9);
|
||||
_7 = Option::<usize>::Some(_8);
|
||||
(_5.0: usize) = move _11;
|
||||
StorageDead(_11);
|
||||
_9 = Option::<usize>::Some(_10);
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
StorageDead(_6);
|
||||
StorageDead(_8);
|
||||
_10 = discriminant(_7);
|
||||
switchInt(move _10) -> [0: bb6, 1: bb8, otherwise: bb11];
|
||||
StorageDead(_10);
|
||||
_12 = discriminant(_9);
|
||||
switchInt(move _12) -> [0: bb6, 1: bb8, otherwise: bb11];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_4);
|
||||
StorageDead(_9);
|
||||
StorageDead(_5);
|
||||
drop(_2) -> [return: bb7, unwind unreachable];
|
||||
}
|
||||
|
||||
@ -102,25 +116,25 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_11 = ((_7 as Some).0: usize);
|
||||
_12 = Len((*_1));
|
||||
_13 = Lt(_11, _12);
|
||||
assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb9, unwind unreachable];
|
||||
_13 = ((_9 as Some).0: usize);
|
||||
_14 = Len((*_1));
|
||||
_15 = Lt(_13, _14);
|
||||
assert(move _15, "index out of bounds: the length is {} but the index is {}", move _14, _13) -> [success: bb9, unwind unreachable];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
_14 = &(*_1)[_11];
|
||||
StorageLive(_15);
|
||||
_15 = &_2;
|
||||
StorageLive(_16);
|
||||
_16 = (_11, _14);
|
||||
_17 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _15, move _16) -> [return: bb10, unwind unreachable];
|
||||
_16 = &(*_1)[_13];
|
||||
StorageLive(_17);
|
||||
_17 = &_2;
|
||||
StorageLive(_18);
|
||||
_18 = (_13, _16);
|
||||
_19 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _17, move _18) -> [return: bb10, unwind unreachable];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
StorageDead(_16);
|
||||
StorageDead(_15);
|
||||
StorageDead(_7);
|
||||
StorageDead(_18);
|
||||
StorageDead(_17);
|
||||
StorageDead(_9);
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
|
@ -5,95 +5,109 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
|
||||
debug f => _2;
|
||||
let mut _0: ();
|
||||
let mut _3: usize;
|
||||
let mut _4: usize;
|
||||
let mut _7: std::option::Option<usize>;
|
||||
let mut _10: isize;
|
||||
let mut _12: usize;
|
||||
let mut _13: bool;
|
||||
let mut _15: &impl Fn(usize, &T);
|
||||
let mut _16: (usize, &T);
|
||||
let _17: ();
|
||||
let mut _18: usize;
|
||||
let mut _4: std::ops::Range<usize>;
|
||||
let mut _5: std::ops::Range<usize>;
|
||||
let mut _9: std::option::Option<usize>;
|
||||
let mut _12: isize;
|
||||
let mut _14: usize;
|
||||
let mut _15: bool;
|
||||
let mut _17: &impl Fn(usize, &T);
|
||||
let mut _18: (usize, &T);
|
||||
let _19: ();
|
||||
let mut _20: &mut std::ops::Range<usize>;
|
||||
scope 1 {
|
||||
debug iter => std::ops::Range<usize>{ .0 => _4, .1 => _3, };
|
||||
let _11: usize;
|
||||
debug iter => _5;
|
||||
let _13: usize;
|
||||
scope 2 {
|
||||
debug i => _11;
|
||||
let _14: &T;
|
||||
debug i => _13;
|
||||
let _16: &T;
|
||||
scope 3 {
|
||||
debug x => _14;
|
||||
debug x => _16;
|
||||
}
|
||||
}
|
||||
scope 5 (inlined iter::range::<impl Iterator for std::ops::Range<usize>>::next) {
|
||||
debug self => &std::ops::Range<usize>{ .0 => _4, .1 => _3, };
|
||||
debug self => _20;
|
||||
scope 6 (inlined <std::ops::Range<usize> as iter::range::RangeIteratorImpl>::spec_next) {
|
||||
debug self => &std::ops::Range<usize>{ .0 => _4, .1 => _3, };
|
||||
let mut _6: bool;
|
||||
let _8: usize;
|
||||
let mut _9: usize;
|
||||
debug self => _20;
|
||||
let mut _8: bool;
|
||||
let _10: usize;
|
||||
let mut _11: usize;
|
||||
let mut _21: &usize;
|
||||
let mut _22: &usize;
|
||||
scope 7 {
|
||||
debug old => _8;
|
||||
debug old => _10;
|
||||
scope 8 {
|
||||
}
|
||||
}
|
||||
scope 9 (inlined cmp::impls::<impl PartialOrd for usize>::lt) {
|
||||
debug self => &_4;
|
||||
debug other => &_3;
|
||||
let mut _5: usize;
|
||||
debug self => _21;
|
||||
debug other => _22;
|
||||
let mut _6: usize;
|
||||
let mut _7: usize;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
scope 4 (inlined <std::ops::Range<usize> as IntoIterator>::into_iter) {
|
||||
debug self => std::ops::Range<usize>{ .0 => _18, .1 => _3, };
|
||||
debug self => _4;
|
||||
}
|
||||
|
||||
bb0: {
|
||||
StorageLive(_3);
|
||||
_3 = Len((*_1));
|
||||
StorageLive(_4);
|
||||
_4 = const 0_usize;
|
||||
_4 = std::ops::Range::<usize> { start: const 0_usize, end: move _3 };
|
||||
StorageDead(_3);
|
||||
StorageLive(_5);
|
||||
_5 = move _4;
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
bb1: {
|
||||
StorageLive(_7);
|
||||
StorageLive(_9);
|
||||
StorageLive(_10);
|
||||
StorageLive(_8);
|
||||
StorageLive(_21);
|
||||
StorageLive(_22);
|
||||
StorageLive(_6);
|
||||
StorageLive(_5);
|
||||
_5 = _4;
|
||||
_6 = Lt(move _5, _3);
|
||||
StorageDead(_5);
|
||||
switchInt(move _6) -> [0: bb2, otherwise: bb3];
|
||||
_6 = (_5.0: usize);
|
||||
StorageLive(_7);
|
||||
_7 = (_5.1: usize);
|
||||
_8 = Lt(move _6, move _7);
|
||||
StorageDead(_7);
|
||||
StorageDead(_6);
|
||||
StorageDead(_22);
|
||||
StorageDead(_21);
|
||||
switchInt(move _8) -> [0: bb2, otherwise: bb3];
|
||||
}
|
||||
|
||||
bb2: {
|
||||
_7 = Option::<usize>::None;
|
||||
_9 = Option::<usize>::None;
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb3: {
|
||||
_8 = _4;
|
||||
StorageLive(_9);
|
||||
_9 = <usize as Step>::forward_unchecked(_8, const 1_usize) -> [return: bb4, unwind: bb12];
|
||||
_10 = (_5.0: usize);
|
||||
StorageLive(_11);
|
||||
_11 = <usize as Step>::forward_unchecked(_10, const 1_usize) -> [return: bb4, unwind: bb12];
|
||||
}
|
||||
|
||||
bb4: {
|
||||
_4 = move _9;
|
||||
StorageDead(_9);
|
||||
_7 = Option::<usize>::Some(_8);
|
||||
(_5.0: usize) = move _11;
|
||||
StorageDead(_11);
|
||||
_9 = Option::<usize>::Some(_10);
|
||||
goto -> bb5;
|
||||
}
|
||||
|
||||
bb5: {
|
||||
StorageDead(_6);
|
||||
StorageDead(_8);
|
||||
_10 = discriminant(_7);
|
||||
switchInt(move _10) -> [0: bb6, 1: bb8, otherwise: bb11];
|
||||
StorageDead(_10);
|
||||
_12 = discriminant(_9);
|
||||
switchInt(move _12) -> [0: bb6, 1: bb8, otherwise: bb11];
|
||||
}
|
||||
|
||||
bb6: {
|
||||
StorageDead(_7);
|
||||
StorageDead(_4);
|
||||
StorageDead(_9);
|
||||
StorageDead(_5);
|
||||
drop(_2) -> [return: bb7, unwind continue];
|
||||
}
|
||||
|
||||
@ -102,25 +116,25 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
|
||||
}
|
||||
|
||||
bb8: {
|
||||
_11 = ((_7 as Some).0: usize);
|
||||
_12 = Len((*_1));
|
||||
_13 = Lt(_11, _12);
|
||||
assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb9, unwind: bb12];
|
||||
_13 = ((_9 as Some).0: usize);
|
||||
_14 = Len((*_1));
|
||||
_15 = Lt(_13, _14);
|
||||
assert(move _15, "index out of bounds: the length is {} but the index is {}", move _14, _13) -> [success: bb9, unwind: bb12];
|
||||
}
|
||||
|
||||
bb9: {
|
||||
_14 = &(*_1)[_11];
|
||||
StorageLive(_15);
|
||||
_15 = &_2;
|
||||
StorageLive(_16);
|
||||
_16 = (_11, _14);
|
||||
_17 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _15, move _16) -> [return: bb10, unwind: bb12];
|
||||
_16 = &(*_1)[_13];
|
||||
StorageLive(_17);
|
||||
_17 = &_2;
|
||||
StorageLive(_18);
|
||||
_18 = (_13, _16);
|
||||
_19 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _17, move _18) -> [return: bb10, unwind: bb12];
|
||||
}
|
||||
|
||||
bb10: {
|
||||
StorageDead(_16);
|
||||
StorageDead(_15);
|
||||
StorageDead(_7);
|
||||
StorageDead(_18);
|
||||
StorageDead(_17);
|
||||
StorageDead(_9);
|
||||
goto -> bb1;
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,7 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
let mut _20: &impl Fn(&T);
|
||||
let mut _21: (&T,);
|
||||
let _22: ();
|
||||
let mut _23: &mut std::iter::Rev<std::slice::Iter<'_, T>>;
|
||||
scope 1 {
|
||||
debug iter => _15;
|
||||
let _19: &T;
|
||||
@ -19,7 +20,7 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
debug x => _19;
|
||||
}
|
||||
scope 25 (inlined <Rev<std::slice::Iter<'_, T>> as Iterator>::next) {
|
||||
debug self => &_15;
|
||||
debug self => _23;
|
||||
let mut _16: &mut std::slice::Iter<'_, T>;
|
||||
}
|
||||
}
|
||||
@ -48,15 +49,15 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
debug ptr => _9;
|
||||
scope 16 (inlined ptr::mut_ptr::<impl *mut T>::is_null) {
|
||||
debug self => _9;
|
||||
let mut _23: *mut u8;
|
||||
let mut _24: *mut u8;
|
||||
scope 17 {
|
||||
scope 18 (inlined ptr::mut_ptr::<impl *mut T>::is_null::runtime_impl) {
|
||||
debug ptr => _23;
|
||||
debug ptr => _24;
|
||||
scope 19 (inlined ptr::mut_ptr::<impl *mut u8>::addr) {
|
||||
debug self => _23;
|
||||
debug self => _24;
|
||||
scope 20 {
|
||||
scope 21 (inlined ptr::mut_ptr::<impl *mut u8>::cast::<()>) {
|
||||
debug self => _23;
|
||||
debug self => _24;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -131,10 +132,10 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
StorageLive(_9);
|
||||
_9 = _4 as *mut T (PtrToPtr);
|
||||
StorageLive(_10);
|
||||
StorageLive(_23);
|
||||
StorageLive(_24);
|
||||
_10 = _9 as *const T (PointerCoercion(MutToConstPointer));
|
||||
_11 = NonNull::<T> { pointer: _10 };
|
||||
StorageDead(_23);
|
||||
StorageDead(_24);
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
StorageLive(_12);
|
||||
|
@ -12,6 +12,7 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
let mut _20: &impl Fn(&T);
|
||||
let mut _21: (&T,);
|
||||
let _22: ();
|
||||
let mut _23: &mut std::iter::Rev<std::slice::Iter<'_, T>>;
|
||||
scope 1 {
|
||||
debug iter => _15;
|
||||
let _19: &T;
|
||||
@ -19,7 +20,7 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
debug x => _19;
|
||||
}
|
||||
scope 25 (inlined <Rev<std::slice::Iter<'_, T>> as Iterator>::next) {
|
||||
debug self => &_15;
|
||||
debug self => _23;
|
||||
let mut _16: &mut std::slice::Iter<'_, T>;
|
||||
}
|
||||
}
|
||||
@ -48,15 +49,15 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
debug ptr => _9;
|
||||
scope 16 (inlined ptr::mut_ptr::<impl *mut T>::is_null) {
|
||||
debug self => _9;
|
||||
let mut _23: *mut u8;
|
||||
let mut _24: *mut u8;
|
||||
scope 17 {
|
||||
scope 18 (inlined ptr::mut_ptr::<impl *mut T>::is_null::runtime_impl) {
|
||||
debug ptr => _23;
|
||||
debug ptr => _24;
|
||||
scope 19 (inlined ptr::mut_ptr::<impl *mut u8>::addr) {
|
||||
debug self => _23;
|
||||
debug self => _24;
|
||||
scope 20 {
|
||||
scope 21 (inlined ptr::mut_ptr::<impl *mut u8>::cast::<()>) {
|
||||
debug self => _23;
|
||||
debug self => _24;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -131,10 +132,10 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
|
||||
StorageLive(_9);
|
||||
_9 = _4 as *mut T (PtrToPtr);
|
||||
StorageLive(_10);
|
||||
StorageLive(_23);
|
||||
StorageLive(_24);
|
||||
_10 = _9 as *const T (PointerCoercion(MutToConstPointer));
|
||||
_11 = NonNull::<T> { pointer: _10 };
|
||||
StorageDead(_23);
|
||||
StorageDead(_24);
|
||||
StorageDead(_10);
|
||||
StorageDead(_9);
|
||||
StorageLive(_12);
|
||||
|
Loading…
x
Reference in New Issue
Block a user