diff options
| author | bors <bors@rust-lang.org> | 2017-11-28 05:38:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-11-28 05:38:19 +0000 |
| commit | 7745a7a8177259cd2ea0b48eaf35dd943eec2896 (patch) | |
| tree | 71bbe2a721b54dd17566f0fc55eb37a068bd50c4 /src/test | |
| parent | 3e9a7f7fbbf2898b9f1d60886f92e76370040d83 (diff) | |
| parent | 919ed409b0fbb56bcd6c70ff50bfc9275c4b7701 (diff) | |
Auto merge of #46142 - eddyb:even-mirer-2, r=nikomatsakis
MIR: split Operand::Consume into Copy and Move. By encoding the choice of leaving the source untouched (`Copy`) and invalidating it (`Move`) in MIR, we can express moves of copyable values and have MIR borrow-checking enforce them, *including* ownership transfer of stack locals in calls (when the ABI passes by indirection). Optimizations could turn a "last-use" `Copy` into a `Move`, and the MIR borrow-checker, at least within the confines of safe code, could even do this when the underlying lvalue was borrowed. (However, that last part would be the first time lifetime inference affects code generation, AFAIK). Furthermore, as `Move`s invalidate borrows as well, for any local that is initialized only once, we can ignore borrows that happened before a `Move` and safely reuse/replace its memory storage. This will allow us to perform NRVO in the presence of short-lived borrows, unlike LLVM (currently), and even compute optimal `StorageLive...StorageDead` ranges instead of discarding them.
Diffstat (limited to 'src/test')
36 files changed, 128 insertions, 128 deletions
diff --git a/src/test/mir-opt/basic_assignment.rs b/src/test/mir-opt/basic_assignment.rs index e7263b47394..a8b87a273bf 100644 --- a/src/test/mir-opt/basic_assignment.rs +++ b/src/test/mir-opt/basic_assignment.rs @@ -43,14 +43,14 @@ fn main() { // StorageLive(_2); // StorageLive(_3); // _3 = _1; -// _2 = _3; +// _2 = move _3; // StorageDead(_3); // StorageLive(_4); // _4 = std::option::Option<std::boxed::Box<u32>>::None; // StorageLive(_5); // StorageLive(_6); -// _6 = _4; -// replace(_5 <- _6) -> [return: bb1, unwind: bb5]; +// _6 = move _4; +// replace(_5 <- move _6) -> [return: bb1, unwind: bb5]; // } // bb1: { // drop(_6) -> [return: bb6, unwind: bb4]; diff --git a/src/test/mir-opt/box_expr.rs b/src/test/mir-opt/box_expr.rs index c782859b126..f4938fae6a5 100644 --- a/src/test/mir-opt/box_expr.rs +++ b/src/test/mir-opt/box_expr.rs @@ -46,7 +46,7 @@ impl Drop for S { // } // // bb1: { -// _1 = _2; +// _1 = move _2; // drop(_2) -> bb4; // } // @@ -61,8 +61,8 @@ impl Drop for S { // bb4: { // StorageDead(_2); // StorageLive(_4); -// _4 = _1; -// _3 = const std::mem::drop(_4) -> [return: bb5, unwind: bb7]; +// _4 = move _1; +// _3 = const std::mem::drop(move _4) -> [return: bb5, unwind: bb7]; // } // // bb5: { diff --git a/src/test/mir-opt/copy_propagation.rs b/src/test/mir-opt/copy_propagation.rs index 223c65737ad..50d8a5154c4 100644 --- a/src/test/mir-opt/copy_propagation.rs +++ b/src/test/mir-opt/copy_propagation.rs @@ -24,10 +24,10 @@ fn main() { // ... // _3 = _1; // ... -// _2 = _3; +// _2 = move _3; // ... // _4 = _2; -// _0 = _4; +// _0 = move _4; // ... // return; // } @@ -35,7 +35,7 @@ fn main() { // START rustc.test.CopyPropagation.after.mir // bb0: { // ... -// _0 = _1; +// _0 = move _1; // ... // return; // } diff --git a/src/test/mir-opt/copy_propagation_arg.rs b/src/test/mir-opt/copy_propagation_arg.rs index ae30b5fae88..017fac6a6a1 100644 --- a/src/test/mir-opt/copy_propagation_arg.rs +++ b/src/test/mir-opt/copy_propagation_arg.rs @@ -43,11 +43,11 @@ fn main() { // StorageLive(_2); // StorageLive(_3); // _3 = _1; -// _2 = const dummy(_3) -> bb1; +// _2 = const dummy(move _3) -> bb1; // } // bb1: { // StorageDead(_3); -// _1 = _2; +// _1 = move _2; // StorageDead(_2); // _0 = (); // return; @@ -58,11 +58,11 @@ fn main() { // StorageLive(_2); // nop; // nop; -// _2 = const dummy(_1) -> bb1; +// _2 = const dummy(move _1) -> bb1; // } // bb1: { // nop; -// _1 = _2; +// _1 = move _2; // StorageDead(_2); // _0 = (); // return; @@ -72,7 +72,7 @@ fn main() { // bb0: { // StorageLive(_3); // _3 = _1; -// _2 = const dummy(_3) -> bb1; +// _2 = const dummy(move _3) -> bb1; // } // bb1: { // StorageDead(_3); @@ -85,7 +85,7 @@ fn main() { // bb0: { // nop; // nop; -// _2 = const dummy(_1) -> bb1; +// _2 = const dummy(move _1) -> bb1; // } // bb1: { // nop; @@ -98,7 +98,7 @@ fn main() { // bb0: { // StorageLive(_2); // _2 = _1; -// _1 = _2; +// _1 = move _2; // StorageDead(_2); // _0 = (); // return; diff --git a/src/test/mir-opt/deaggregator_test.rs b/src/test/mir-opt/deaggregator_test.rs index d0f4e3bb60b..c918bef129a 100644 --- a/src/test/mir-opt/deaggregator_test.rs +++ b/src/test/mir-opt/deaggregator_test.rs @@ -29,7 +29,7 @@ fn main() { // ... // _2 = _1; // ... -// _0 = Baz { x: _2, y: const 0f32, z: const false }; +// _0 = Baz { x: move _2, y: const 0f32, z: const false }; // ... // return; // } @@ -39,7 +39,7 @@ fn main() { // ... // _2 = _1; // ... -// (_0.0: usize) = _2; +// (_0.0: usize) = move _2; // (_0.1: f32) = const 0f32; // (_0.2: bool) = const false; // ... diff --git a/src/test/mir-opt/deaggregator_test_enum.rs b/src/test/mir-opt/deaggregator_test_enum.rs index 9400ae5050b..8af56b7c011 100644 --- a/src/test/mir-opt/deaggregator_test_enum.rs +++ b/src/test/mir-opt/deaggregator_test_enum.rs @@ -30,7 +30,7 @@ fn main() { // bb0: { // StorageLive(_2); // _2 = _1; -// _0 = Baz::Foo { x: _2 }; +// _0 = Baz::Foo { x: move _2 }; // StorageDead(_2); // return; // } @@ -39,7 +39,7 @@ fn main() { // bb0: { // StorageLive(_2); // _2 = _1; -// ((_0 as Foo).0: usize) = _2; +// ((_0 as Foo).0: usize) = move _2; // discriminant(_0) = 1; // StorageDead(_2); // return; diff --git a/src/test/mir-opt/deaggregator_test_enum_2.rs b/src/test/mir-opt/deaggregator_test_enum_2.rs index ab62164e800..b6505de22f3 100644 --- a/src/test/mir-opt/deaggregator_test_enum_2.rs +++ b/src/test/mir-opt/deaggregator_test_enum_2.rs @@ -33,14 +33,14 @@ fn main() { // bb1: { // StorageLive(_4); // _4 = _2; -// _0 = Foo::A(_4,); +// _0 = Foo::A(move _4,); // StorageDead(_4); // goto -> bb3; // } // bb2: { // StorageLive(_5); // _5 = _2; -// _0 = Foo::B(_5,); +// _0 = Foo::B(move _5,); // StorageDead(_5); // goto -> bb3; // } @@ -49,7 +49,7 @@ fn main() { // bb1: { // StorageLive(_4); // _4 = _2; -// ((_0 as A).0: i32) = _4; +// ((_0 as A).0: i32) = move _4; // discriminant(_0) = 0; // StorageDead(_4); // goto -> bb3; @@ -57,7 +57,7 @@ fn main() { // bb2: { // StorageLive(_5); // _5 = _2; -// ((_0 as B).0: i32) = _5; +// ((_0 as B).0: i32) = move _5; // discriminant(_0) = 1; // StorageDead(_5); // goto -> bb3; diff --git a/src/test/mir-opt/deaggregator_test_multiple.rs b/src/test/mir-opt/deaggregator_test_multiple.rs index 91643e07ed0..3a9a458fd46 100644 --- a/src/test/mir-opt/deaggregator_test_multiple.rs +++ b/src/test/mir-opt/deaggregator_test_multiple.rs @@ -30,12 +30,12 @@ fn main() { // ... // _3 = _1; // ... -// _2 = Foo::A(_3,); +// _2 = Foo::A(move _3,); // ... // _5 = _1; -// _4 = Foo::A(_5,); +// _4 = Foo::A(move _5,); // ... -// _0 = [_2, _4]; +// _0 = [move _2, move _4]; // ... // return; // } @@ -45,14 +45,14 @@ fn main() { // ... // _3 = _1; // ... -// ((_2 as A).0: i32) = _3; +// ((_2 as A).0: i32) = move _3; // discriminant(_2) = 0; // ... // _5 = _1; -// ((_4 as A).0: i32) = _5; +// ((_4 as A).0: i32) = move _5; // discriminant(_4) = 0; // ... -// _0 = [_2, _4]; +// _0 = [move _2, move _4]; // ... // return; // } diff --git a/src/test/mir-opt/end_region_2.rs b/src/test/mir-opt/end_region_2.rs index 5ee377569dd..56c3e2a38a0 100644 --- a/src/test/mir-opt/end_region_2.rs +++ b/src/test/mir-opt/end_region_2.rs @@ -46,7 +46,7 @@ fn main() { // _3 = &'23_1rs _2; // StorageLive(_5); // _5 = _2; -// switchInt(_5) -> [0u8: bb3, otherwise: bb2]; +// switchInt(move _5) -> [0u8: bb3, otherwise: bb2]; // } // bb2: { // _0 = (); diff --git a/src/test/mir-opt/end_region_3.rs b/src/test/mir-opt/end_region_3.rs index 1dbbd74cdf3..8c0d56eba78 100644 --- a/src/test/mir-opt/end_region_3.rs +++ b/src/test/mir-opt/end_region_3.rs @@ -48,7 +48,7 @@ fn main() { // _3 = &'26_1rs _1; // StorageLive(_5); // _5 = _1; -// switchInt(_5) -> [0u8: bb3, otherwise: bb2]; +// switchInt(move _5) -> [0u8: bb3, otherwise: bb2]; // } // bb2: { // _0 = (); diff --git a/src/test/mir-opt/end_region_4.rs b/src/test/mir-opt/end_region_4.rs index 6b8018e4b22..d9456ef1563 100644 --- a/src/test/mir-opt/end_region_4.rs +++ b/src/test/mir-opt/end_region_4.rs @@ -51,7 +51,7 @@ fn foo(i: i32) { // _3 = &'26_2rs _2; // StorageLive(_5); // _5 = (*_3); -// _4 = const foo(_5) -> [return: bb1, unwind: bb3]; +// _4 = const foo(move _5) -> [return: bb1, unwind: bb3]; // } // bb1: { // StorageDead(_5); diff --git a/src/test/mir-opt/end_region_5.rs b/src/test/mir-opt/end_region_5.rs index f5d5bf1e4a6..c2ee2d62b98 100644 --- a/src/test/mir-opt/end_region_5.rs +++ b/src/test/mir-opt/end_region_5.rs @@ -41,9 +41,9 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // StorageLive(_3); // StorageLive(_4); // _4 = &'14s _1; -// _3 = [closure@NodeId(18)] { d: _4 }; +// _3 = [closure@NodeId(18)] { d: move _4 }; // StorageDead(_4); -// _2 = const foo(_3) -> [return: bb1, unwind: bb3]; +// _2 = const foo(move _3) -> [return: bb1, unwind: bb3]; // } // bb1: { // EndRegion('14s); @@ -73,7 +73,7 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // bb0: { // StorageLive(_2); // _2 = ((*(_1.0: &'14s D)).0: i32); -// _0 = _2; +// _0 = move _2; // StorageDead(_2); // return; // } diff --git a/src/test/mir-opt/end_region_6.rs b/src/test/mir-opt/end_region_6.rs index 7f0e16eaa06..34675e8842f 100644 --- a/src/test/mir-opt/end_region_6.rs +++ b/src/test/mir-opt/end_region_6.rs @@ -41,9 +41,9 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // StorageLive(_3); // StorageLive(_4); // _4 = &'19s _1; -// _3 = [closure@NodeId(22)] { d: _4 }; +// _3 = [closure@NodeId(22)] { d: move _4 }; // StorageDead(_4); -// _2 = const foo(_3) -> [return: bb1, unwind: bb3]; +// _2 = const foo(move _3) -> [return: bb1, unwind: bb3]; // } // bb1: { // EndRegion('19s); @@ -76,7 +76,7 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // _2 = &'15_0rs (*(_1.0: &'19s D)); // StorageLive(_3); // _3 = ((*_2).0: i32); -// _0 = _3; +// _0 = move _3; // StorageDead(_3); // EndRegion('15_0rs); // StorageDead(_2); diff --git a/src/test/mir-opt/end_region_7.rs b/src/test/mir-opt/end_region_7.rs index 7a17afee3e0..a9b6d2196fc 100644 --- a/src/test/mir-opt/end_region_7.rs +++ b/src/test/mir-opt/end_region_7.rs @@ -40,8 +40,8 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // _1 = D::{{constructor}}(const 0i32,); // StorageLive(_3); // StorageLive(_4); -// _4 = _1; -// _3 = [closure@NodeId(22)] { d: _4 }; +// _4 = move _1; +// _3 = [closure@NodeId(22)] { d: move _4 }; // drop(_4) -> [return: bb4, unwind: bb3]; // } // bb1: { @@ -55,7 +55,7 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // } // bb4: { // StorageDead(_4); -// _2 = const foo(_3) -> [return: bb5, unwind: bb3]; +// _2 = const foo(move _3) -> [return: bb5, unwind: bb3]; // } // bb5: { // drop(_3) -> [return: bb6, unwind: bb2]; @@ -84,7 +84,7 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // _2 = &'15_0rs (_1.0: D); // StorageLive(_3); // _3 = ((*_2).0: i32); -// _0 = _3; +// _0 = move _3; // StorageDead(_3); // EndRegion('15_0rs); // StorageDead(_2); diff --git a/src/test/mir-opt/end_region_8.rs b/src/test/mir-opt/end_region_8.rs index 1df30995102..4c1ec4b1026 100644 --- a/src/test/mir-opt/end_region_8.rs +++ b/src/test/mir-opt/end_region_8.rs @@ -46,9 +46,9 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // StorageLive(_4); // StorageLive(_5); // _5 = _2; -// _4 = [closure@NodeId(22)] { r: _5 }; +// _4 = [closure@NodeId(22)] { r: move _5 }; // StorageDead(_5); -// _3 = const foo(_4) -> [return: bb1, unwind: bb3]; +// _3 = const foo(move _4) -> [return: bb1, unwind: bb3]; // } // bb1: { // StorageDead(_4); @@ -79,7 +79,7 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 { // bb0: { // StorageLive(_2); // _2 = ((*(_1.0: &'21_1rs D)).0: i32); -// _0 = _2; +// _0 = move _2; // StorageDead(_2); // return; // } diff --git a/src/test/mir-opt/end_region_9.rs b/src/test/mir-opt/end_region_9.rs index d3482077305..b313e296ac9 100644 --- a/src/test/mir-opt/end_region_9.rs +++ b/src/test/mir-opt/end_region_9.rs @@ -64,7 +64,7 @@ fn main() { // bb1: { // StorageLive(_7); // _7 = _1; -// switchInt(_7) -> [0u8: bb3, otherwise: bb2]; +// switchInt(move _7) -> [0u8: bb3, otherwise: bb2]; // } // bb2: { // _0 = (); diff --git a/src/test/mir-opt/end_region_cyclic.rs b/src/test/mir-opt/end_region_cyclic.rs index 5eada97ed20..b8dabada18e 100644 --- a/src/test/mir-opt/end_region_cyclic.rs +++ b/src/test/mir-opt/end_region_cyclic.rs @@ -70,11 +70,11 @@ fn query() -> bool { true } // StorageLive(_3); // StorageLive(_4); // _4 = std::option::Option<&'35_0rs S<'35_0rs>>::None; -// _3 = const <std::cell::Cell<T>>::new(_4) -> bb2; +// _3 = const <std::cell::Cell<T>>::new(move _4) -> bb2; // } // bb2: { // StorageDead(_4); -// _2 = S<'35_0rs> { r: _3 }; +// _2 = S<'35_0rs> { r: move _3 }; // StorageDead(_3); // StorageLive(_6); // _6 = &'16s (_2.0: std::cell::Cell<std::option::Option<&'35_0rs S<'35_0rs>>>); @@ -83,9 +83,9 @@ fn query() -> bool { true } // StorageLive(_9); // _9 = &'35_0rs _2; // _8 = &'35_0rs (*_9); -// _7 = std::option::Option<&'35_0rs S<'35_0rs>>::Some(_8,); +// _7 = std::option::Option<&'35_0rs S<'35_0rs>>::Some(move _8,); // StorageDead(_8); -// _5 = const <std::cell::Cell<T>>::set(_6, _7) -> bb3; +// _5 = const <std::cell::Cell<T>>::set(move _6, move _7) -> bb3; // } // bb3: { // EndRegion('16s); @@ -96,7 +96,7 @@ fn query() -> bool { true } // _11 = const query() -> bb4; // } // bb4: { -// switchInt(_11) -> [0u8: bb6, otherwise: bb5]; +// switchInt(move _11) -> [0u8: bb6, otherwise: bb5]; // } // bb5: { // _0 = (); @@ -115,9 +115,9 @@ fn query() -> bool { true } // StorageLive(_17); // _17 = &'35_0rs _2; // _16 = &'35_0rs (*_17); -// _15 = std::option::Option<&'35_0rs S<'35_0rs>>::Some(_16,); +// _15 = std::option::Option<&'35_0rs S<'35_0rs>>::Some(move _16,); // StorageDead(_16); -// _13 = const <std::cell::Cell<T>>::set(_14, _15) -> bb7; +// _13 = const <std::cell::Cell<T>>::set(move _14, move_15) -> bb7; // } // bb7: { // EndRegion('33s); diff --git a/src/test/mir-opt/end_region_destruction_extents_1.rs b/src/test/mir-opt/end_region_destruction_extents_1.rs index 12d14df47df..aebe0a1ff6a 100644 --- a/src/test/mir-opt/end_region_destruction_extents_1.rs +++ b/src/test/mir-opt/end_region_destruction_extents_1.rs @@ -92,12 +92,12 @@ unsafe impl<'a, #[may_dangle] 'b> Drop for D1<'a, 'b> { // _9 = S1::{{constructor}}(const "dang1",); // _8 = &'10s _9; // _7 = &'10s (*_8); -// _3 = D1<'12ds, '10s>::{{constructor}}(_4, _7); +// _3 = D1<'12ds, '10s>::{{constructor}}(move _4, move _7); // EndRegion('10s); // StorageDead(_7); // StorageDead(_4); // _2 = (_3.0: &'12ds S1); -// _1 = _2; +// _1 = move _2; // StorageDead(_2); // drop(_3) -> bb1; // } @@ -139,12 +139,12 @@ unsafe impl<'a, #[may_dangle] 'b> Drop for D1<'a, 'b> { // StorageLive(_8); // _8 = promoted[0]; // _7 = &'10s (*_8); -// _3 = D1<'12ds, '10s>::{{constructor}}(_4, _7); +// _3 = D1<'12ds, '10s>::{{constructor}}(move _4, move _7); // EndRegion('10s); // StorageDead(_7); // StorageDead(_4); // _2 = (_3.0: &'12ds S1); -// _1 = _2; +// _1 = move _2; // StorageDead(_2); // drop(_3) -> bb1; // } diff --git a/src/test/mir-opt/inline-closure-borrows-arg.rs b/src/test/mir-opt/inline-closure-borrows-arg.rs index de7b38d5519..3fb54f90984 100644 --- a/src/test/mir-opt/inline-closure-borrows-arg.rs +++ b/src/test/mir-opt/inline-closure-borrows-arg.rs @@ -37,12 +37,12 @@ fn foo<T: Copy>(_t: T, q: &i32) -> i32 { // _6 = &(*_2); // ... // _7 = &(*_2); -// _5 = (_6, _7); -// _9 = (_5.0: &i32); -// _10 = (_5.1: &i32); +// _5 = (move _6, move _7); +// _9 = move (_5.0: &i32); +// _10 = move (_5.1: &i32); // StorageLive(_8); // _8 = (*_9); -// _0 = _8; +// _0 = move _8; // ... // return; // } diff --git a/src/test/mir-opt/inline-closure.rs b/src/test/mir-opt/inline-closure.rs index 9d3fb923f5b..dc8ff13c03a 100644 --- a/src/test/mir-opt/inline-closure.rs +++ b/src/test/mir-opt/inline-closure.rs @@ -33,10 +33,10 @@ fn foo<T: Copy>(_t: T, q: i32) -> i32 { // _6 = _2; // ... // _7 = _2; -// _5 = (_6, _7); -// _8 = (_5.0: i32); -// _9 = (_5.1: i32); -// _0 = _8; +// _5 = (move _6, move _7); +// _8 = move (_5.0: i32); +// _9 = move (_5.1: i32); +// _0 = move _8; // ... // return; // } diff --git a/src/test/mir-opt/issue-38669.rs b/src/test/mir-opt/issue-38669.rs index 9415e140d80..b5c188cf834 100644 --- a/src/test/mir-opt/issue-38669.rs +++ b/src/test/mir-opt/issue-38669.rs @@ -31,7 +31,7 @@ fn main() { // bb1: { // StorageLive(_4); // _4 = _1; -// switchInt(_4) -> [0u8: bb3, otherwise: bb2]; +// switchInt(move _4) -> [0u8: bb3, otherwise: bb2]; // } // // bb2: { diff --git a/src/test/mir-opt/lower_128bit_debug_test.rs b/src/test/mir-opt/lower_128bit_debug_test.rs index 4626dc17e1f..134a868f933 100644 --- a/src/test/mir-opt/lower_128bit_debug_test.rs +++ b/src/test/mir-opt/lower_128bit_debug_test.rs @@ -75,71 +75,71 @@ fn main() { // START rustc.test_signed.Lower128Bit.after.mir // _2 = const i128_addo(_1, const 1i128) -> bb10; // ... -// _1 = (_2.0: i128); +// _1 = move (_2.0: i128); // _3 = const i128_subo(_1, const 2i128) -> bb11; // ... -// _1 = (_3.0: i128); +// _1 = move (_3.0: i128); // _4 = const i128_mulo(_1, const 3i128) -> bb12; // ... -// _1 = (_4.0: i128); +// _1 = move (_4.0: i128); // ... // _1 = const i128_div(_1, const 4i128) -> bb13; // ... // _1 = const i128_rem(_1, const 5i128) -> bb15; // ... -// _1 = (_13.0: i128); +// _1 = move (_13.0: i128); // ... // _17 = const 7i32 as u128 (Misc); -// _14 = const i128_shro(_1, _17) -> bb16; +// _14 = const i128_shro(_1, move _17) -> bb16; // ... -// _1 = (_14.0: i128); +// _1 = move (_14.0: i128); // ... -// assert(!(_2.1: bool), "attempt to add with overflow") -> bb1; +// assert(!move (_2.1: bool), "attempt to add with overflow") -> bb1; // ... -// assert(!(_3.1: bool), "attempt to subtract with overflow") -> bb2; +// assert(!move (_3.1: bool), "attempt to subtract with overflow") -> bb2; // ... -// assert(!(_4.1: bool), "attempt to multiply with overflow") -> bb3; +// assert(!move (_4.1: bool), "attempt to multiply with overflow") -> bb3; // ... -// assert(!(_13.1: bool), "attempt to shift left with overflow") -> bb8; +// assert(!move (_13.1: bool), "attempt to shift left with overflow") -> bb8; // ... // _16 = const 6i32 as u128 (Misc); -// _13 = const i128_shlo(_1, _16) -> bb14; +// _13 = const i128_shlo(_1, move _16) -> bb14; // ... -// assert(!(_14.1: bool), "attempt to shift right with overflow") -> bb9; +// assert(!move (_14.1: bool), "attempt to shift right with overflow") -> bb9; // END rustc.test_signed.Lower128Bit.after.mir // START rustc.test_unsigned.Lower128Bit.after.mir // _2 = const u128_addo(_1, const 1u128) -> bb8; // ... -// _1 = (_2.0: u128); +// _1 = move (_2.0: u128); // _3 = const u128_subo(_1, const 2u128) -> bb9; // ... -// _1 = (_3.0: u128); +// _1 = move (_3.0: u128); // _4 = const u128_mulo(_1, const 3u128) -> bb10; // ... -// _1 = (_4.0: u128); +// _1 = move (_4.0: u128); // ... // _1 = const u128_div(_1, const 4u128) -> bb11; // ... // _1 = const u128_rem(_1, const 5u128) -> bb13; // ... -// _1 = (_7.0: u128); +// _1 = move (_7.0: u128); // ... // _11 = const 7i32 as u128 (Misc); -// _8 = const u128_shro(_1, _11) -> bb14; +// _8 = const u128_shro(_1, move _11) -> bb14; // ... -// _1 = (_8.0: u128); +// _1 = move (_8.0: u128); // ... -// assert(!(_2.1: bool), "attempt to add with overflow") -> bb1; +// assert(!move (_2.1: bool), "attempt to add with overflow") -> bb1; // ... -// assert(!(_3.1: bool), "attempt to subtract with overflow") -> bb2; +// assert(!move (_3.1: bool), "attempt to subtract with overflow") -> bb2; // ... -// assert(!(_4.1: bool), "attempt to multiply with overflow") -> bb3; +// assert(!move (_4.1: bool), "attempt to multiply with overflow") -> bb3; // ... -// assert(!(_7.1: bool), "attempt to shift left with overflow") -> bb6; +// assert(!move (_7.1: bool), "attempt to shift left with overflow") -> bb6; // ... // _10 = const 6i32 as u128 (Misc); -// _7 = const u128_shlo(_1, _10) -> bb12; +// _7 = const u128_shlo(_1, move _10) -> bb12; // ... -// assert(!(_8.1: bool), "attempt to shift right with overflow") -> bb7; +// assert(!move (_8.1: bool), "attempt to shift right with overflow") -> bb7; // END rustc.test_unsigned.Lower128Bit.after.mir diff --git a/src/test/mir-opt/lower_128bit_test.rs b/src/test/mir-opt/lower_128bit_test.rs index 207cd0ac57e..5de75014f0e 100644 --- a/src/test/mir-opt/lower_128bit_test.rs +++ b/src/test/mir-opt/lower_128bit_test.rs @@ -83,10 +83,10 @@ fn main() { // _1 = const i128_sub(_1, const 2i128) -> bb6; // ... // _11 = const 7i32 as u32 (Misc); -// _1 = const i128_shr(_1, _11) -> bb9; +// _1 = const i128_shr(_1, move _11) -> bb9; // ... // _12 = const 6i32 as u32 (Misc); -// _1 = const i128_shl(_1, _12) -> bb10; +// _1 = const i128_shl(_1, move _12) -> bb10; // END rustc.test_signed.Lower128Bit.after.mir // START rustc.test_unsigned.Lower128Bit.after.mir @@ -101,8 +101,8 @@ fn main() { // _1 = const u128_sub(_1, const 2u128) -> bb4; // ... // _5 = const 7i32 as u32 (Misc); -// _1 = const u128_shr(_1, _5) -> bb7; +// _1 = const u128_shr(_1, move _5) -> bb7; // ... // _6 = const 6i32 as u32 (Misc); -// _1 = const u128_shl(_1, _6) -> bb8; +// _1 = const u128_shl(_1, move _6) -> bb8; // END rustc.test_unsigned.Lower128Bit.after.mir diff --git a/src/test/mir-opt/match_false_edges.rs b/src/test/mir-opt/match_false_edges.rs index a59b21473f1..b0adbd6ba89 100644 --- a/src/test/mir-opt/match_false_edges.rs +++ b/src/test/mir-opt/match_false_edges.rs @@ -54,12 +54,12 @@ fn main() { // ... // _2 = std::option::Option<i32>::Some(const 42i32,); // _5 = discriminant(_2); -// switchInt(_5) -> [0isize: bb5, 1isize: bb3, otherwise: bb7]; +// switchInt(move _5) -> [0isize: bb5, 1isize: bb3, otherwise: bb7]; // } // bb1: { // arm1 // StorageLive(_7); // _7 = _3; -// _1 = (const 1i32, _7); +// _1 = (const 1i32, move _7); // StorageDead(_7); // goto -> bb12; // } @@ -89,7 +89,7 @@ fn main() { // _6 = const guard() -> bb9; // } // bb9: { // end of guard -// switchInt(_6) -> [0u8: bb10, otherwise: bb1]; +// switchInt(move _6) -> [0u8: bb10, otherwise: bb1]; // } // bb10: { // to pre_binding2 // falseEdges -> [real: bb4, imaginary: bb4]; @@ -99,7 +99,7 @@ fn main() { // _4 = ((_2 as Some).0: i32); // StorageLive(_8); // _8 = _4; -// _1 = (const 2i32, _8); +// _1 = (const 2i32, move _8); // StorageDead(_8); // goto -> bb12; // } @@ -114,12 +114,12 @@ fn main() { // ... // _2 = std::option::Option<i32>::Some(const 42i32,); // _5 = discriminant(_2); -// switchInt(_5) -> [0isize: bb4, 1isize: bb3, otherwise: bb7]; +// switchInt(move _5) -> [0isize: bb4, 1isize: bb3, otherwise: bb7]; // } // bb1: { // arm1 // StorageLive(_7); // _7 = _3; -// _1 = (const 1i32, _7); +// _1 = (const 1i32, move _7); // StorageDead(_7); // goto -> bb12; // } @@ -149,7 +149,7 @@ fn main() { // _6 = const guard() -> bb9; // } // bb9: { // end of guard -// switchInt(_6) -> [0u8: bb10, otherwise: bb1]; +// switchInt(move _6) -> [0u8: bb10, otherwise: bb1]; // } // bb10: { // to pre_binding2 // falseEdges -> [real: bb5, imaginary: bb4]; @@ -159,7 +159,7 @@ fn main() { // _4 = ((_2 as Some).0: i32); // StorageLive(_8); // _8 = _4; -// _1 = (const 2i32, _8); +// _1 = (const 2i32, move _8); // StorageDead(_8); // goto -> bb12; // } @@ -174,7 +174,7 @@ fn main() { // ... // _2 = std::option::Option<i32>::Some(const 1i32,); // _7 = discriminant(_2); -// switchInt(_7) -> [1isize: bb3, otherwise: bb4]; +// switchInt(move _7) -> [1isize: bb3, otherwise: bb4]; // } // bb1: { // arm1 // _1 = const 1i32; @@ -207,7 +207,7 @@ fn main() { // _8 = const guard() -> bb9; // } // bb9: { //end of guard -// switchInt(_8) -> [0u8: bb10, otherwise: bb1]; +// switchInt(move _8) -> [0u8: bb10, otherwise: bb1]; // } // bb10: { // to pre_binding2 // falseEdges -> [real: bb4, imaginary: bb4]; @@ -224,11 +224,11 @@ fn main() { // StorageLive(_10); // StorageLive(_11); // _11 = _5; -// _10 = const guard2(_11) -> bb13; +// _10 = const guard2(move _11) -> bb13; // } // bb13: { // end of guard2 // StorageDead(_11); -// switchInt(_10) -> [0u8: bb14, otherwise: bb2]; +// switchInt(move _10) -> [0u8: bb14, otherwise: bb2]; // } // bb14: { // to pre_binding4 // falseEdges -> [real: bb6, imaginary: bb6]; diff --git a/src/test/mir-opt/nll/liveness-drop-intra-block.rs b/src/test/mir-opt/nll/liveness-drop-intra-block.rs index 5c34479d259..3e86677956f 100644 --- a/src/test/mir-opt/nll/liveness-drop-intra-block.rs +++ b/src/test/mir-opt/nll/liveness-drop-intra-block.rs @@ -36,6 +36,6 @@ fn main() { // | Live variables at bb1[3]: [_1] // _4 = _1; // | Live variables at bb1[4]: [_4] -// _3 = const use_x(_4) -> bb2; +// _3 = const use_x(move _4) -> bb2; // } // END rustc.main.nll.0.mir diff --git a/src/test/mir-opt/nll/liveness-interblock.rs b/src/test/mir-opt/nll/liveness-interblock.rs index 8217befca6b..32a38a5cd5e 100644 --- a/src/test/mir-opt/nll/liveness-interblock.rs +++ b/src/test/mir-opt/nll/liveness-interblock.rs @@ -36,7 +36,7 @@ fn main() { // | Live variables at bb2[1]: [_1] // _4 = _1; // | Live variables at bb2[2]: [_4] -// _3 = const make_live(_4) -> bb4; +// _3 = const make_live(move _4) -> bb4; // } // END rustc.main.nll.0.mir // START rustc.main.nll.0.mir diff --git a/src/test/mir-opt/nll/region-liveness-basic.rs b/src/test/mir-opt/nll/region-liveness-basic.rs index ae059febc71..3aba3ac86ae 100644 --- a/src/test/mir-opt/nll/region-liveness-basic.rs +++ b/src/test/mir-opt/nll/region-liveness-basic.rs @@ -51,6 +51,6 @@ fn main() { // | Live variables at bb2[1]: [_2] // _7 = (*_2); // | Live variables at bb2[2]: [_7] -// _6 = const use_x(_7) -> bb4; +// _6 = const use_x(move _7) -> bb4; // } // END rustc.main.nll.0.mir diff --git a/src/test/mir-opt/nll/region-subtyping-basic.rs b/src/test/mir-opt/nll/region-subtyping-basic.rs index fb178b46b47..35701076730 100644 --- a/src/test/mir-opt/nll/region-subtyping-basic.rs +++ b/src/test/mir-opt/nll/region-subtyping-basic.rs @@ -45,5 +45,5 @@ fn main() { // ... // _7 = _2; // ... -// _6 = _7; +// _6 = move _7; // END rustc.main.nll.0.mir diff --git a/src/test/mir-opt/packed-struct-drop-aligned.rs b/src/test/mir-opt/packed-struct-drop-aligned.rs index 07a943976c3..dc36248811e 100644 --- a/src/test/mir-opt/packed-struct-drop-aligned.rs +++ b/src/test/mir-opt/packed-struct-drop-aligned.rs @@ -40,10 +40,10 @@ impl Drop for Droppy { // bb0: { // StorageLive(_1); // ... -// _1 = Packed::{{constructor}}(_2,); +// _1 = Packed::{{constructor}}(move _2,); // ... // StorageLive(_6); -// _6 = (_1.0: Aligned); +// _6 = move (_1.0: Aligned); // drop(_6) -> [return: bb4, unwind: bb3]; // } // bb1: { @@ -54,12 +54,12 @@ impl Drop for Droppy { // return; // } // bb3: { -// (_1.0: Aligned) = _4; +// (_1.0: Aligned) = move _4; // drop(_1) -> bb1; // } // bb4: { // StorageDead(_6); -// (_1.0: Aligned) = _4; +// (_1.0: Aligned) = move _4; // StorageDead(_4); // _0 = (); // drop(_1) -> bb2; diff --git a/src/test/mir-opt/storage_live_dead_in_statics.rs b/src/test/mir-opt/storage_live_dead_in_statics.rs index 995639e20d6..730ef655b13 100644 --- a/src/test/mir-opt/storage_live_dead_in_statics.rs +++ b/src/test/mir-opt/storage_live_dead_in_statics.rs @@ -185,11 +185,11 @@ fn main() { // _47 = (const 0u32, const 2u32); // StorageLive(_48); // _48 = (const 0u32, const 3u32); -// _6 = [_7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48]; +// _6 = [move _7, move _8, move _9, move _10, move _11, move _12, move _13, move _14, move _15, move _16, move _17, move _18, move _19, move _20, move _21, move _22, move _23, move _24, move _25, move _26, move _27, move _28, move _29, move _30, move _31, move _32, move _33, move _34, move _35, move _36, move _37, move _38, move _39, move _40, move _41, move _42, move _43, move _44, move _45, move _46, move _47, move _48]; // _5 = &_6; // _4 = &(*_5); -// _3 = _4 as &'static [(u32, u32)] (Unsize); -// _2 = Foo { tup: const "hi", data: _3 }; +// _3 = move _4 as &'static [(u32, u32)] (Unsize); +// _2 = Foo { tup: const "hi", data: move _3 }; // _1 = &_2; // _0 = &(*_1); // StorageDead(_1); diff --git a/src/test/mir-opt/storage_ranges.rs b/src/test/mir-opt/storage_ranges.rs index 53cb82bb0f6..41eaf67d292 100644 --- a/src/test/mir-opt/storage_ranges.rs +++ b/src/test/mir-opt/storage_ranges.rs @@ -27,7 +27,7 @@ fn main() { // StorageLive(_4); // StorageLive(_5); // _5 = _1; -// _4 = std::option::Option<i32>::Some(_5,); +// _4 = std::option::Option<i32>::Some(move _5,); // StorageDead(_5); // _3 = &_4; // _2 = (); diff --git a/src/test/mir-opt/validate_1.rs b/src/test/mir-opt/validate_1.rs index b7360a0e087..e6cd5355000 100644 --- a/src/test/mir-opt/validate_1.rs +++ b/src/test/mir-opt/validate_1.rs @@ -47,7 +47,7 @@ fn main() { // _5 = &ReErased mut (*_6); // Validate(Acquire, [(*_5): i32/ReScope(Node(ItemLocalId(10)))]); // Validate(Release, [_2: (), _3: &ReScope(Node(ItemLocalId(10))) Test, _5: &ReScope(Node(ItemLocalId(10))) mut i32]); -// _2 = const Test::foo(_3, _5) -> bb1; +// _2 = const Test::foo(move _3, move _5) -> bb1; // } // // bb1: { @@ -69,7 +69,7 @@ fn main() { // Validate(Acquire, [(*_3): i32/ReScope(Remainder(BlockRemainder { block: ItemLocalId(22), first_statement_index: 0 })) (imm)]); // StorageLive(_4); // _4 = (*_3); -// _0 = _4; +// _0 = move _4; // StorageDead(_4); // EndRegion(ReScope(Remainder(BlockRemainder { block: ItemLocalId(22), first_statement_index: 0 }))); // StorageDead(_3); diff --git a/src/test/mir-opt/validate_2.rs b/src/test/mir-opt/validate_2.rs index 5f3dad5efde..5b8ba4d8d06 100644 --- a/src/test/mir-opt/validate_2.rs +++ b/src/test/mir-opt/validate_2.rs @@ -22,7 +22,7 @@ fn main() { // bb1: { // Validate(Acquire, [_2: std::boxed::Box<[i32; 3]>]); // Validate(Release, [_2: std::boxed::Box<[i32; 3]>]); -// _1 = _2 as std::boxed::Box<[i32]> (Unsize); +// _1 = move _2 as std::boxed::Box<[i32]> (Unsize); // Validate(Acquire, [_1: std::boxed::Box<[i32]>]); // StorageDead(_2); // StorageDead(_3); diff --git a/src/test/mir-opt/validate_3.rs b/src/test/mir-opt/validate_3.rs index 50c410039e2..80e75fcee8a 100644 --- a/src/test/mir-opt/validate_3.rs +++ b/src/test/mir-opt/validate_3.rs @@ -48,7 +48,7 @@ fn main() { // _4 = &ReErased (*_5); // Validate(Acquire, [(*_4): i32/ReScope(Node(ItemLocalId(17))) (imm)]); // Validate(Release, [_3: (), _4: &ReScope(Node(ItemLocalId(17))) i32]); -// _3 = const foo(_4) -> bb1; +// _3 = const foo(move _4) -> bb1; // } // bb1: { // Validate(Acquire, [_3: ()]); diff --git a/src/test/mir-opt/validate_4.rs b/src/test/mir-opt/validate_4.rs index 39438af4b44..fb0c8871d83 100644 --- a/src/test/mir-opt/validate_4.rs +++ b/src/test/mir-opt/validate_4.rs @@ -65,7 +65,7 @@ fn main() { // Validate(Acquire, [_1: &ReFree(DefId(0/0:4 ~ validate_4[317d]::test[0]), BrAnon(0)) mut i32]); // Validate(Release, [_1: &ReFree(DefId(0/0:4 ~ validate_4[317d]::test[0]), BrAnon(0)) mut i32]); // ... -// _2 = const write_42(_3) -> bb1; +// _2 = const write_42(move _3) -> bb1; // } // bb1: { // Validate(Acquire, [_2: bool]); @@ -82,7 +82,7 @@ fn main() { // Validate(Release, [_1: &ReFree(DefId(0/1:10 ~ validate_4[317d]::main[0]::{{closure}}[0]), BrEnv) [closure@NodeId(60)], _2: &ReFree(DefId(0/1:10 ~ validate_4[317d]::main[0]::{{closure}}[0]), BrAnon(0)) mut i32]); // StorageLive(_3); // ... -// _0 = const write_42(_3) -> bb1; +// _0 = const write_42(move _3) -> bb1; // } // ... // } diff --git a/src/test/mir-opt/validate_5.rs b/src/test/mir-opt/validate_5.rs index 043338c8089..c9408c1f2f8 100644 --- a/src/test/mir-opt/validate_5.rs +++ b/src/test/mir-opt/validate_5.rs @@ -40,7 +40,7 @@ fn main() { // Validate(Acquire, [_1: &ReFree(DefId(0/0:4 ~ validate_5[317d]::test[0]), BrAnon(0)) mut i32]); // ... // Validate(Release, [_2: bool, _3: *mut i32]); -// _2 = const write_42(_3) -> bb1; +// _2 = const write_42(move _3) -> bb1; // } // ... // } @@ -55,11 +55,11 @@ fn main() { // Validate(Suspend(ReScope(Node(ItemLocalId(9)))), [(*_2): i32]); // _4 = &ReErased mut (*_2); // Validate(Acquire, [(*_4): i32/ReScope(Node(ItemLocalId(9)))]); -// _3 = _4 as *mut i32 (Misc); +// _3 = move _4 as *mut i32 (Misc); // EndRegion(ReScope(Node(ItemLocalId(9)))); // StorageDead(_4); // Validate(Release, [_0: bool, _3: *mut i32]); -// _0 = const write_42(_3) -> bb1; +// _0 = const write_42(move _3) -> bb1; // } // ... // } |
