]> git.lizzy.rs Git - rust.git/commitdiff
Update README and tests for new infrastructure
authorChristopher Vittal <christopher.vittal@gmail.com>
Tue, 10 Oct 2017 03:14:13 +0000 (23:14 -0400)
committerChristopher Vittal <christopher.vittal@gmail.com>
Tue, 10 Oct 2017 03:22:34 +0000 (23:22 -0400)
25 files changed:
src/test/mir-opt/README.md
src/test/mir-opt/box_expr.rs
src/test/mir-opt/copy_propagation.rs
src/test/mir-opt/deaggregator_test.rs
src/test/mir-opt/deaggregator_test_enum.rs
src/test/mir-opt/deaggregator_test_enum_2.rs
src/test/mir-opt/deaggregator_test_multiple.rs
src/test/mir-opt/end_region_1.rs
src/test/mir-opt/end_region_2.rs
src/test/mir-opt/end_region_3.rs
src/test/mir-opt/end_region_4.rs
src/test/mir-opt/end_region_5.rs
src/test/mir-opt/end_region_6.rs
src/test/mir-opt/end_region_7.rs
src/test/mir-opt/end_region_8.rs
src/test/mir-opt/end_region_9.rs
src/test/mir-opt/end_region_cyclic.rs
src/test/mir-opt/issue-41110.rs
src/test/mir-opt/storage_live_dead_in_statics.rs
src/test/mir-opt/storage_ranges.rs
src/test/mir-opt/validate_1.rs
src/test/mir-opt/validate_2.rs
src/test/mir-opt/validate_3.rs
src/test/mir-opt/validate_4.rs
src/test/mir-opt/validate_5.rs

index d999ff97551606478161d6e6ff85150cba695ce7..b00b35aa29ff45191cc696c3970ee381559ed464 100644 (file)
@@ -7,13 +7,13 @@ The test format is:
 // END RUST SOURCE
 // START $file_name_of_some_mir_dump_0
 //  $expected_line_0
-// ...
+// (lines or elision)
 // $expected_line_N
 // END $file_name_of_some_mir_dump_0
-// ...
+// (lines or elision)
 // START $file_name_of_some_mir_dump_N
 //  $expected_line_0
-// ...
+// (lines or elision)
 // $expected_line_N
 // END $file_name_of_some_mir_dump_N
 ```
@@ -22,10 +22,15 @@ All the test information is in comments so the test is runnable.
 
 For each $file_name, compiletest expects [$expected_line_0, ...,
 $expected_line_N] to appear in the dumped MIR in order.  Currently it allows
-other non-matched lines before, after and in-between. Note that this includes
-lines that end basic blocks or begin new ones; it is good practice
-in your tests to include the terminator for each of your basic blocks as an
-internal sanity check guarding against a test like:
+other non-matched lines before and after, but not between $expected_lines,
+should you want to skip lines, you must include an elision comment, of the form
+(as a regex) `//\s*...\s*`. The lines will be skipped lazily, that is, if there
+are two identical lines in the output that match the line after the elision
+comment, the first one wil be matched.
+
+Examples:
+
+The following blocks will not match the one after it.
 
 ```
 bb0: {
@@ -35,8 +40,6 @@ bb0: {
 }
 ```
 
-that will inadvertantly pattern-matching against:
-
 ```
 bb0: {
     StorageLive(_1);
@@ -49,6 +52,18 @@ bb1: {
 }
 ```
 
+But this will match the one above,
+
+```
+bb0: {
+    StorageLive(_1);
+    _1 = const true;
+    ...
+    StorageDead(_1);
+    ...
+}
+```
+
 Lines match ignoring whitespace, and the prefix "//" is removed.
 
 It also currently strips trailing comments -- partly because the full file path
index 4015930ef7633139ccf413d391fbec5f0b206d44..5c3b418e950016db67d98ebaac93be5b82db5b92 100644 (file)
@@ -30,7 +30,10 @@ fn drop(&mut self) {
 // END RUST SOURCE
 // START rustc.node4.ElaborateDrops.before.mir
 //     let mut _0: ();
-//     let _1: std::boxed::Box<S>;
+//     scope 1 {
+//         let _1: std::boxed::Box<S>;
+//     }
+//     ...
 //     let mut _2: std::boxed::Box<S>;
 //     let mut _3: ();
 //     let mut _4: std::boxed::Box<S>;
index 26b042d0343f049d803778886ebfec4a8e7cc03d..0b0d2f45f1c553259ec64a17a2a2d6588e894dc2 100644 (file)
@@ -18,17 +18,23 @@ fn main() { }
 // END RUST SOURCE
 // START rustc.node4.CopyPropagation.before.mir
 //  bb0: {
+//      ...
 //      _2 = _1;
+//      ...
 //      _4 = _2;
 //      _3 = _4;
+//      ...
 //      _5 = _3;
 //      _0 = _5;
+//      ...
 //      return;
 //  }
 // END rustc.node4.CopyPropagation.before.mir
 // START rustc.node4.CopyPropagation.after.mir
 //  bb0: {
+//      ...
 //      _0 = _1;
+//      ...
 //      return;
 //  }
 // END rustc.node4.CopyPropagation.after.mir
index 81dd1932894fb326e944e6af5c035d9616fe38e4..ce2b13ecda7b77d634d98de46be63c894d8c4988 100644 (file)
@@ -23,19 +23,25 @@ fn main() {}
 // END RUST SOURCE
 // START rustc.node13.Deaggregator.before.mir
 // bb0: {
+//     ...
 //     _2 = _1;
+//     ...
 //     _3 = _2;
 //     _0 = Baz { x: _3, y: const 0f32, z: const false };
+//     ...
 //     return;
 // }
 // END rustc.node13.Deaggregator.before.mir
 // START rustc.node13.Deaggregator.after.mir
 // bb0: {
+//     ...
 //     _2 = _1;
+//     ...
 //     _3 = _2;
 //     (_0.0: usize) = _3;
 //     (_0.1: f32) = const 0f32;
 //     (_0.2: bool) = const false;
+//     ...
 //     return;
 // }
 // END rustc.node13.Deaggregator.after.mir
index 25fa0e90835c601b8d9edd74247d49fae252c098..d77dcb627817fb75431f0d4500e5d79f2e42051b 100644 (file)
@@ -28,18 +28,26 @@ fn main() {
 // END RUST SOURCE
 // START rustc.node10.Deaggregator.before.mir
 // bb0: {
+//     StorageLive(_2);
 //     _2 = _1;
+//     StorageLive(_3);
 //     _3 = _2;
 //     _0 = Baz::Foo { x: _3 };
+//     StorageDead(_3);
+//     StorageDead(_2);
 //     return;
 // }
 // END rustc.node10.Deaggregator.before.mir
 // START rustc.node10.Deaggregator.after.mir
 // bb0: {
+//     StorageLive(_2);
 //     _2 = _1;
+//     StorageLive(_3);
 //     _3 = _2;
 //     ((_0 as Foo).0: usize) = _3;
 //     discriminant(_0) = 1;
+//     StorageDead(_3);
+//     StorageDead(_2);
 //     return;
 // }
 // END rustc.node10.Deaggregator.after.mir
index 02d496b2901e66b1b4a428cccde5ed8662e59b4b..e65830bddc4d3040dc09b382752896a67d7b2e53 100644 (file)
@@ -28,29 +28,35 @@ fn main() {}
 // END RUST SOURCE
 // START rustc.node12.Deaggregator.before.mir
 //  bb1: {
+//      StorageLive(_6);
 //      _6 = _4;
 //      _0 = Foo::A(_6,);
+//      StorageDead(_6);
 //      goto -> bb3;
 //  }
-//
 //  bb2: {
+//      StorageLive(_7);
 //      _7 = _4;
 //      _0 = Foo::B(_7,);
+//      StorageDead(_7);
 //      goto -> bb3;
 //  }
 // END rustc.node12.Deaggregator.before.mir
 // START rustc.node12.Deaggregator.after.mir
 //  bb1: {
+//      StorageLive(_6);
 //      _6 = _4;
 //      ((_0 as A).0: i32) = _6;
 //      discriminant(_0) = 0;
+//      StorageDead(_6);
 //      goto -> bb3;
 //  }
-//
 //  bb2: {
+//      StorageLive(_7);
 //      _7 = _4;
 //      ((_0 as B).0: i32) = _7;
 //      discriminant(_0) = 1;
+//      StorageDead(_7);
 //      goto -> bb3;
 //  }
 // END rustc.node12.Deaggregator.after.mir
index a180a69be55af71c3b977ce75751757eb4741fd4..ed68d3bf5f750daf3ef35ec046a4865eb9d22ccf 100644 (file)
@@ -24,25 +24,35 @@ fn main() { }
 // END RUST SOURCE
 // START rustc.node10.Deaggregator.before.mir
 // bb0: {
+//     ...
 //     _2 = _1;
+//     ...
 //     _4 = _2;
 //     _3 = Foo::A(_4,);
+//     ...
 //     _6 = _2;
 //     _5 = Foo::A(_6,);
+//     ...
 //     _0 = [_3, _5];
+//     ...
 //     return;
 // }
 // END rustc.node10.Deaggregator.before.mir
 // START rustc.node10.Deaggregator.after.mir
 // bb0: {
+//     ...
 //     _2 = _1;
+//     ...
 //     _4 = _2;
 //     ((_3 as A).0: i32) = _4;
 //     discriminant(_3) = 0;
+//     ...
 //     _6 = _2;
 //     ((_5 as A).0: i32) = _6;
 //     discriminant(_5) = 0;
+//     ...
 //     _0 = [_3, _5];
+//     ...
 //     return;
 // }
 // END rustc.node10.Deaggregator.after.mir
index 1941d1bc7be1b6c3bc9a61090af46bbdd68cf24d..a0edcc82fe18ac888bb25df4c1e4c68f4709020a 100644 (file)
@@ -21,9 +21,11 @@ fn main() {
 // END RUST SOURCE
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 //     let mut _0: ();
+//     ...
 //     let _1: i32;
+//     ...
 //     let _2: &'10_1rs i32;
-//
+//     ...
 //     bb0: {
 //         StorageLive(_1);
 //         _1 = const 3i32;
index d8dd4aeadf495008f1d21bb6f010c899ddc9b955..69042fecc7d721597d78c947832c9c680a97183e 100644 (file)
@@ -26,11 +26,16 @@ fn main() {
 // END RUST SOURCE
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 //     let mut _0: ();
+//     ...
 //     let _2: bool;
+//     ...
 //     let _3: &'23_1rs bool;
+//     ...
 //     let _7: &'23_3rs bool;
+//     ...
 //     let mut _4: ();
 //     let mut _5: bool;
+//     ...
 //     bb0: {
 //         goto -> bb1;
 //     }
@@ -52,6 +57,7 @@ fn main() {
 //         return;
 //     }
 //     bb3: {
+//         _4 = ();
 //         StorageDead(_5);
 //         StorageLive(_7);
 //         _7 = &'23_3rs _2;
index e404af838cef44a8247ee2823907998df0c98fed..da423163e842da82ab482b93c734b4d32b295730 100644 (file)
@@ -27,13 +27,17 @@ fn main() {
 // END RUST SOURCE
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 //     let mut _0: ();
+//     ...
 //     let mut _1: bool;
+//     ...
 //     let _3: &'26_1rs bool;
+//     ...
 //     let _7: &'26_3rs bool;
+//     ...
 //     let mut _2: ();
 //     let mut _4: ();
 //     let mut _5: bool;
-//
+//     let mut _6: !;
 //     bb0: {
 //         StorageLive(_1);
 //         goto -> bb1;
index d51c627d14b2380314dbf6dbe8b0f8670954ddcf..2087485b913d4c272ac8843994be5fa4db5d6e4f 100644 (file)
@@ -31,10 +31,15 @@ fn foo(i: i32) {
 // END RUST SOURCE
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 //     let mut _0: ();
+//     ...
 //     let _1: D;
+//     ...
 //     let _2: i32;
+//     ...
 //     let _3: &'26_2rs i32;
+//     ...
 //     let _6: &'26_4rs i32;
+//     ...
 //     let mut _4: ();
 //     let mut _5: i32;
 //     bb0: {
index 6299ec3815cd1625f3573e77c327f0e923944d6c..4663b71bd7cb0166720c737fdd94f6bfe5c9e704 100644 (file)
@@ -28,8 +28,11 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 {
 // END RUST SOURCE
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 // fn main() -> () {
+//     ...
 //     let mut _0: ();
+//     ...
 //     let _1: D;
+//     ...
 //     let mut _2: ();
 //     let mut _3: [closure@NodeId(18) d:&'14s D];
 //     let mut _4: &'14s D;
index 13ab3e4f2dd2a0c5dc0b2c99597de93a8b566ce8..7d2868ee4ba57f0813854fb5566fe488d2b094a5 100644 (file)
@@ -29,7 +29,9 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 {
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 // fn main() -> () {
 //     let mut _0: ();
+//     ...
 //     let _1: D;
+//     ...
 //     let mut _2: ();
 //     let mut _3: [closure@NodeId(22) d:&'19s D];
 //     let mut _4: &'19s D;
@@ -65,9 +67,10 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 {
 // START rustc.node22.SimplifyCfg-qualify-consts.after.mir
 // fn main::{{closure}}(_1: [closure@NodeId(22) d:&'19s D]) -> i32 {
 //     let mut _0: i32;
+//     ...
 //     let _2: &'15_0rs D;
+//     ...
 //     let mut _3: i32;
-//
 //     bb0: {
 //         StorageLive(_2);
 //         _2 = &'15_0rs (*(_1.0: &'19s D));
index 826d3749167d30c2b2d182250420c68701a2883c..0156c1be7edf95b3f282ec83789494ac26d3304f 100644 (file)
@@ -29,11 +29,12 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 {
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 // fn main() -> () {
 //     let mut _0: ();
+//     ...
 //     let _1: D;
+//     ...
 //     let mut _2: ();
 //     let mut _3: [closure@NodeId(22) d:D];
 //     let mut _4: D;
-//
 //     bb0: {
 //         StorageLive(_1);
 //         _1 = D::{{constructor}}(const 0i32,);
@@ -74,9 +75,10 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 {
 // START rustc.node22.SimplifyCfg-qualify-consts.after.mir
 // fn main::{{closure}}(_1: [closure@NodeId(22) d:D]) -> i32 {
 //     let mut _0: i32;
+//     ...
 //     let _2: &'15_0rs D;
+//     ...
 //     let mut _3: i32;
-//
 //     bb0: {
 //         StorageLive(_2);
 //         _2 = &'15_0rs (_1.0: D);
index 6438484fcfae41a1651271b39b1086b3a676353b..6e8cf4204ee9becdc2a5b75033f2c3c019168e4d 100644 (file)
@@ -30,8 +30,11 @@ fn foo<F>(f: F) where F: FnOnce() -> i32 {
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 // fn main() -> () {
 //    let mut _0: ();
+//    ...
 //    let _1: D;
+//    ...
 //    let _2: &'21_1rs D;
+//    ...
 //    let mut _3: ();
 //    let mut _4: [closure@NodeId(22) r:&'21_1rs D];
 //    let mut _5: &'21_1rs D;
index 59d5d934391e94b49719cd99c587d44ed851aa08..fd23d81345229644dda85be4bbcd9207e4d7a7ad 100644 (file)
@@ -40,15 +40,18 @@ fn main() {
 // START rustc.node4.SimplifyCfg-qualify-consts.after.mir
 // fn main() -> () {
 //     let mut _0: ();
+//     ...
 //     let mut _1: bool;
+//     ...
 //     let _2: i32;
+//     ...
 //     let mut _4: &'33_0rs i32;
+//     ...
 //     let mut _3: ();
 //     let mut _5: !;
 //     let mut _6: ();
 //     let mut _7: bool;
 //     let mut _8: !;
-//
 //     bb0: {
 //        StorageLive(_1);
 //        _1 = const false;
@@ -63,7 +66,6 @@ fn main() {
 //        _7 = _1;
 //        switchInt(_7) -> [0u8: bb3, otherwise: bb2];
 //    }
-//
 //    bb2: {
 //        _0 = ();
 //        StorageDead(_7);
@@ -73,7 +75,6 @@ fn main() {
 //        StorageDead(_1);
 //        return;
 //    }
-//
 //    bb3: {
 //        _4 = &'33_0rs _2;
 //        _6 = ();
index 8f9dd79cd7542b5ac96fa0e5ab00e821124b30d2..f70f651927544488aca0069eb13b8340768fb757 100644 (file)
@@ -45,6 +45,7 @@ fn query() -> bool { true }
 //     scope 1 {
 //         let _2: S<'35_0rs>;
 //     }
+//     ...
 //     let mut _1: ();
 //     let mut _3: std::cell::Cell<std::option::Option<&'35_0rs S<'35_0rs>>>;
 //     let mut _4: std::option::Option<&'35_0rs S<'35_0rs>>;
index 3a8b5c449c22ad7fe94d8c633be20a6fa24aa10d..384201b7c128d449a48fa527e6aebe446ee1a681 100644 (file)
@@ -35,22 +35,26 @@ fn other(self, s: Self) {}
 // END RUST SOURCE
 // START rustc.node4.ElaborateDrops.after.mir
 //    let mut _0: ();
-//    let _1: ();
+//    scope 1 {
+//        let _1: ();
+//    }
+//    ...
 //    let mut _2: S;
 //    let mut _3: S;
 //    let mut _4: S;
 //    let mut _5: bool;
-//
 //    bb0: {
 // END rustc.node4.ElaborateDrops.after.mir
 // START rustc.node13.ElaborateDrops.after.mir
 //    let mut _0: ();
+//    ...
 //    let _1: S;
+//    ...
 //    let mut _2: S;
+//    ...
 //    let mut _3: ();
 //    let mut _4: S;
 //    let mut _5: S;
 //    let mut _6: bool;
-//
 //    bb0: {
 // END rustc.node13.ElaborateDrops.after.mir
index 9fb725a980e8d18250358ebe4c548d095a48ece3..370ab599eca708790b0b802fe2a82783eea72ba1 100644 (file)
@@ -45,56 +45,156 @@ fn main() {
 
 // END RUST SOURCE
 // START rustc.node4.mir_map.0.mir
+//    let mut _0: &'static Foo;
+//    let mut _1: &'static Foo;
+//    let mut _2: Foo;
+//    let mut _3: &'static [(u32, u32)];
+//    let mut _4: &'static [(u32, u32); 42];
+//    let mut _5: &'static [(u32, u32); 42];
+//    let mut _6: [(u32, u32); 42];
+//    let mut _7: (u32, u32);
+//    let mut _8: (u32, u32);
+//    let mut _9: (u32, u32);
+//    let mut _10: (u32, u32);
+//    let mut _11: (u32, u32);
+//    let mut _12: (u32, u32);
+//    let mut _13: (u32, u32);
+//    let mut _14: (u32, u32);
+//    let mut _15: (u32, u32);
+//    let mut _16: (u32, u32);
+//    let mut _17: (u32, u32);
+//    let mut _18: (u32, u32);
+//    let mut _19: (u32, u32);
+//    let mut _20: (u32, u32);
+//    let mut _21: (u32, u32);
+//    let mut _22: (u32, u32);
+//    let mut _23: (u32, u32);
+//    let mut _24: (u32, u32);
+//    let mut _25: (u32, u32);
+//    let mut _26: (u32, u32);
+//    let mut _27: (u32, u32);
+//    let mut _28: (u32, u32);
+//    let mut _29: (u32, u32);
+//    let mut _30: (u32, u32);
+//    let mut _31: (u32, u32);
+//    let mut _32: (u32, u32);
+//    let mut _33: (u32, u32);
+//    let mut _34: (u32, u32);
+//    let mut _35: (u32, u32);
+//    let mut _36: (u32, u32);
+//    let mut _37: (u32, u32);
+//    let mut _38: (u32, u32);
+//    let mut _39: (u32, u32);
+//    let mut _40: (u32, u32);
+//    let mut _41: (u32, u32);
+//    let mut _42: (u32, u32);
+//    let mut _43: (u32, u32);
+//    let mut _44: (u32, u32);
+//    let mut _45: (u32, u32);
+//    let mut _46: (u32, u32);
+//    let mut _47: (u32, u32);
+//    let mut _48: (u32, u32);
 //    bb0: {
-//        _7 = (const 0u32, const 1u32);   // scope 0 at src/test/mir-opt/basic_assignment.rs:29:9: 29:15
-//        _8 = (const 0u32, const 2u32);   // scope 0 at src/test/mir-opt/basic_assignment.rs:29:17: 29:23
-//        _9 = (const 0u32, const 3u32);   // scope 0 at src/test/mir-opt/basic_assignment.rs:29:25: 29:31
-//        _10 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:30:9: 30:15
-//        _11 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:30:17: 30:23
-//        _12 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:30:25: 30:31
-//        _13 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:31:9: 31:15
-//        _14 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:31:17: 31:23
-//        _15 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:31:25: 31:31
-//        _16 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:32:9: 32:15
-//        _17 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:32:17: 32:23
-//        _18 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:32:25: 32:31
-//        _19 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:33:9: 33:15
-//        _20 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:33:17: 33:23
-//        _21 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:33:25: 33:31
-//        _22 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:34:9: 34:15
-//        _23 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:34:17: 34:23
-//        _24 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:34:25: 34:31
-//        _25 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:35:9: 35:15
-//        _26 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:35:17: 35:23
-//        _27 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:35:25: 35:31
-//        _28 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:36:9: 36:15
-//        _29 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:36:17: 36:23
-//        _30 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:36:25: 36:31
-//        _31 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:37:9: 37:15
-//        _32 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:37:17: 37:23
-//        _33 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:37:25: 37:31
-//        _34 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:38:9: 38:15
-//        _35 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:38:17: 38:23
-//        _36 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:38:25: 38:31
-//        _37 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:39:9: 39:15
-//        _38 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:39:17: 39:23
-//        _39 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:39:25: 39:31
-//        _40 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:40:9: 40:15
-//        _41 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:40:17: 40:23
-//        _42 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:40:25: 40:31
-//        _43 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:41:9: 41:15
-//        _44 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:41:17: 41:23
-//        _45 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:41:25: 41:31
-//        _46 = (const 0u32, const 1u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:42:9: 42:15
-//        _47 = (const 0u32, const 2u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:42:17: 42:23
-//        _48 = (const 0u32, const 3u32);  // scope 0 at src/test/mir-opt/basic_assignment.rs:42:25: 42:31
-//        _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]; // scope 0 at src/test/mir-opt/basic_assignment.rs:28:12: 43:6
-//        _5 = &_6;                        // scope 0 at src/test/mir-opt/basic_assignment.rs:28:11: 43:6
-//        _4 = &(*_5);                     // scope 0 at src/test/mir-opt/basic_assignment.rs:28:11: 43:6
-//        _3 = _4 as &'static [(u32, u32)] (Unsize); // scope 0 at src/test/mir-opt/basic_assignment.rs:28:11: 43:6
-//        _2 = Foo { tup: const "hi", data: _3 }; // scope 0 at src/test/mir-opt/basic_assignment.rs:26:29: 44:2
-//        _1 = &_2;                        // scope 0 at src/test/mir-opt/basic_assignment.rs:26:28: 44:2
-//        _0 = &(*_1);                     // scope 0 at src/test/mir-opt/basic_assignment.rs:26:28: 44:2
-//        return;                          // scope 0 at src/test/mir-opt/basic_assignment.rs:26:1: 44:3
+//        StorageLive(_1);
+//        StorageLive(_2);
+//        StorageLive(_3);
+//        StorageLive(_4);
+//        StorageLive(_5);
+//        StorageLive(_6);
+//        StorageLive(_7);
+//        _7 = (const 0u32, const 1u32);
+//        StorageLive(_8);
+//        _8 = (const 0u32, const 2u32);
+//        StorageLive(_9);
+//        _9 = (const 0u32, const 3u32);
+//        StorageLive(_10);
+//        _10 = (const 0u32, const 1u32);
+//        StorageLive(_11);
+//        _11 = (const 0u32, const 2u32);
+//        StorageLive(_12);
+//        _12 = (const 0u32, const 3u32);
+//        StorageLive(_13);
+//        _13 = (const 0u32, const 1u32);
+//        StorageLive(_14);
+//        _14 = (const 0u32, const 2u32);
+//        StorageLive(_15);
+//        _15 = (const 0u32, const 3u32);
+//        StorageLive(_16);
+//        _16 = (const 0u32, const 1u32);
+//        StorageLive(_17);
+//        _17 = (const 0u32, const 2u32);
+//        StorageLive(_18);
+//        _18 = (const 0u32, const 3u32);
+//        StorageLive(_19);
+//        _19 = (const 0u32, const 1u32);
+//        StorageLive(_20);
+//        _20 = (const 0u32, const 2u32);
+//        StorageLive(_21);
+//        _21 = (const 0u32, const 3u32);
+//        StorageLive(_22);
+//        _22 = (const 0u32, const 1u32);
+//        StorageLive(_23);
+//        _23 = (const 0u32, const 2u32);
+//        StorageLive(_24);
+//        _24 = (const 0u32, const 3u32);
+//        StorageLive(_25);
+//        _25 = (const 0u32, const 1u32);
+//        StorageLive(_26);
+//        _26 = (const 0u32, const 2u32);
+//        StorageLive(_27);
+//        _27 = (const 0u32, const 3u32);
+//        StorageLive(_28);
+//        _28 = (const 0u32, const 1u32);
+//        StorageLive(_29);
+//        _29 = (const 0u32, const 2u32);
+//        StorageLive(_30);
+//        _30 = (const 0u32, const 3u32);
+//        StorageLive(_31);
+//        _31 = (const 0u32, const 1u32);
+//        StorageLive(_32);
+//        _32 = (const 0u32, const 2u32);
+//        StorageLive(_33);
+//        _33 = (const 0u32, const 3u32);
+//        StorageLive(_34);
+//        _34 = (const 0u32, const 1u32);
+//        StorageLive(_35);
+//        _35 = (const 0u32, const 2u32);
+//        StorageLive(_36);
+//        _36 = (const 0u32, const 3u32);
+//        StorageLive(_37);
+//        _37 = (const 0u32, const 1u32);
+//        StorageLive(_38);
+//        _38 = (const 0u32, const 2u32);
+//        StorageLive(_39);
+//        _39 = (const 0u32, const 3u32);
+//        StorageLive(_40);
+//        _40 = (const 0u32, const 1u32);
+//        StorageLive(_41);
+//        _41 = (const 0u32, const 2u32);
+//        StorageLive(_42);
+//        _42 = (const 0u32, const 3u32);
+//        StorageLive(_43);
+//        _43 = (const 0u32, const 1u32);
+//        StorageLive(_44);
+//        _44 = (const 0u32, const 2u32);
+//        StorageLive(_45);
+//        _45 = (const 0u32, const 3u32);
+//        StorageLive(_46);
+//        _46 = (const 0u32, const 1u32);
+//        StorageLive(_47);
+//        _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];
+//        _5 = &_6;
+//        _4 = &(*_5);
+//        _3 = _4 as &'static [(u32, u32)] (Unsize);
+//        _2 = Foo { tup: const "hi", data: _3 };
+//        _1 = &_2;
+//        _0 = &(*_1);
+//        StorageDead(_1);
+//        StorageDead(_5);
+//        return;
 //    }
+//}
 // END rustc.node4.mir_map.0.mir
index 3fbd1a36f2f169bcb935b452a0e38d75c90ff955..7dbcf82af349382222e7d533e64888c012760e06 100644 (file)
@@ -38,5 +38,6 @@ fn main() {
 //         _0 = ();
 //         StorageDead(_6);
 //         StorageDead(_1);
+//         return;
 //      }
 // END rustc.node4.TypeckMir.before.mir
index d2ca65775a44ea8a8e41d0bf6e95f76341db11f7..0c570deae242b9c1b0e8192949a0b128b19f2f35 100644 (file)
@@ -31,12 +31,15 @@ fn main() {
 // START rustc.node12.EraseRegions.after.mir
 //     bb0: {
 //         Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:5) => validate_1[8cd8]::{{impl}}[0]::foo[0] }, BrAnon(0)) Test, _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:5) => validate_1[8cd8]::{{impl}}[0]::foo[0] }, BrAnon(1)) mut i32]);
+//         ...
 //         return;
 //     }
 // END rustc.node12.EraseRegions.after.mir
 // START rustc.node23.EraseRegions.after.mir
 // fn main() -> () {
+//     ...
 //     bb0: {
+//         ...
 //         Validate(Suspend(ReScope(Node(ItemLocalId(10)))), [_1: i32]);
 //         _6 = &ReErased mut _1;
 //         Validate(Acquire, [(*_6): i32/ReScope(Node(ItemLocalId(10)))]);
@@ -50,12 +53,14 @@ fn main() {
 //     bb1: {
 //         Validate(Acquire, [_2: ()]);
 //         EndRegion(ReScope(Node(ItemLocalId(10))));
+//         ...
 //         return;
 //     }
 // }
 // END rustc.node23.EraseRegions.after.mir
 // START rustc.node50.EraseRegions.after.mir
 // fn main::{{closure}}(_1: &ReErased [closure@NodeId(50)], _2: &ReErased mut i32) -> i32 {
+//     ...
 //     bb0: {
 //         Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:11) => validate_1[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(50)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:11) => validate_1[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
 //         StorageLive(_3);
index 37ebd720d52da567aecf5f8974d2912d025bbf5e..aacf5a5ed0f5afd0ee71579e2d47332f523d211e 100644 (file)
@@ -18,10 +18,18 @@ fn main() {
 // END RUST SOURCE
 // START rustc.node4.EraseRegions.after.mir
 // 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);
 //         Validate(Acquire, [_1: std::boxed::Box<[i32]>]);
+//         StorageDead(_2);
+//         StorageDead(_3);
+//         _0 = ();
+//         Validate(Release, [_1: std::boxed::Box<[i32]>]);
+//         drop(_1) -> bb2;
 //     }
+//     ...
 // }
 // END rustc.node4.EraseRegions.after.mir
index 116e35b2d6f26952a870dbc11f095542d53b0dbf..d7d3e023c9ed6a51496c62d9d395d5e2cfc3ef29 100644 (file)
@@ -30,8 +30,17 @@ fn _unused2(x: *const i32) -> i32 { unsafe { *x }}
 // END RUST SOURCE
 // START rustc.node16.EraseRegions.after.mir
 // fn main() -> () {
+//     ...
 //     let mut _5: &ReErased i32;
 //     bb0: {
+//         StorageLive(_1);
+//         _1 = Test { x: const 0i32 };
+//         StorageLive(_2);
+//         Validate(Suspend(ReScope(Remainder(BlockRemainder { block: ItemLocalId(19), first_statement_index: 3 }))), [_1: Test]);
+//         _2 = &ReErased _1;
+//         Validate(Acquire, [(*_2): Test/ReScope(Remainder(BlockRemainder { block: ItemLocalId(19), first_statement_index: 3 })) (imm)]);
+//         StorageLive(_4);
+//         StorageLive(_5);
 //         Validate(Suspend(ReScope(Node(ItemLocalId(17)))), [((*_2).0: i32): i32/ReScope(Remainder(BlockRemainder { block: ItemLocalId(19), first_statement_index: 3 })) (imm)]);
 //         _5 = &ReErased ((*_2).0: i32);
 //         Validate(Acquire, [(*_5): i32/ReScope(Node(ItemLocalId(17))) (imm)]);
@@ -42,8 +51,14 @@ fn _unused2(x: *const i32) -> i32 { unsafe { *x }}
 //         _3 = const foo(_4) -> bb1;
 //     }
 //     bb1: {
+//         Validate(Acquire, [_3: ()]);
 //         EndRegion(ReScope(Node(ItemLocalId(17))));
+//         StorageDead(_4);
+//         StorageDead(_5);
+//         _0 = ();
 //         EndRegion(ReScope(Remainder(BlockRemainder { block: ItemLocalId(19), first_statement_index: 3 })));
+//         StorageDead(_2);
+//         StorageDead(_1);
 //         return;
 //     }
 // }
index d240b51e222e17ed603bcd308af47d81593ada5b..da9a4c7e455763e5f282cb282c4c6172f8b4e3af 100644 (file)
@@ -38,15 +38,18 @@ fn main() {
 // END RUST SOURCE
 // START rustc.node4.EraseRegions.after.mir
 // fn write_42(_1: *mut i32) -> bool {
+//     ...
 //     bb0: {
 //         Validate(Acquire, [_1: *mut i32]);
 //         Validate(Release, [_1: *mut i32]);
+//         ...
 //         return;
 //     }
 // }
 // END rustc.node4.EraseRegions.after.mir
 // START rustc.node22.EraseRegions.after.mir
 // fn write_42::{{closure}}(_1: &ReErased [closure@NodeId(22)], _2: *mut i32) -> () {
+//     ...
 //     bb0: {
 //         Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_4[8cd8]::write_42[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(22)], _2: *mut i32]);
 //         Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_4[8cd8]::write_42[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(22)], _2: *mut i32]);
@@ -60,24 +63,30 @@ fn main() {
 // END rustc.node22.EraseRegions.after.mir
 // START rustc.node31.EraseRegions.after.mir
 // fn test(_1: &ReErased mut i32) -> () {
+//     ...
 //     bb0: {
 //         Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:4) => validate_4[8cd8]::test[0] }, BrAnon(0)) mut i32]);
 //         Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:4) => validate_4[8cd8]::test[0] }, BrAnon(0)) mut i32]);
+//         ...
 //         _3 = const write_42(_4) -> bb1;
 //     }
 //     bb1: {
 //         Validate(Acquire, [_3: bool]);
 //         Validate(Release, [_3: bool]);
+//         ...
 //     }
 // }
 // END rustc.node31.EraseRegions.after.mir
 // START rustc.node60.EraseRegions.after.mir
 // fn main::{{closure}}(_1: &ReErased [closure@NodeId(60)], _2: &ReErased mut i32) -> bool {
+//     ...
 //     bb0: {
 //         Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(60)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
 //         Validate(Release, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(60)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:10) => validate_4[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
 //         StorageLive(_3);
+//         ...
 //         _0 = const write_42(_4) -> bb1;
 //     }
+//     ...
 // }
 // END rustc.node60.EraseRegions.after.mir
index e1eeb2102d1a2535031c49aa54d1a66702d39426..0ece83afa13cff379ec553bb3d6c5cf980e6fc4d 100644 (file)
@@ -35,15 +35,19 @@ fn main() {
 // END RUST SOURCE
 // START rustc.node17.EraseRegions.after.mir
 // fn test(_1: &ReErased mut i32) -> () {
+//     ...
 //     bb0: {
 //         Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(0:4) => validate_5[8cd8]::test[0] }, BrAnon(0)) mut i32]);
+//         ...
 //         Validate(Release, [_3: bool, _4: *mut i32]);
 //         _3 = const write_42(_4) -> bb1;
 //     }
+//     ...
 // }
 // END rustc.node17.EraseRegions.after.mir
 // START rustc.node46.EraseRegions.after.mir
 // fn main::{{closure}}(_1: &ReErased [closure@NodeId(46)], _2: &ReErased mut i32) -> bool {
+//     ...
 //     bb0: {
 //         Validate(Acquire, [_1: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_5[8cd8]::main[0]::{{closure}}[0] }, "BrEnv") [closure@NodeId(46)], _2: &ReFree(DefId { krate: CrateNum(0), index: DefIndex(1:9) => validate_5[8cd8]::main[0]::{{closure}}[0] }, BrAnon(1)) mut i32]);
 //         StorageLive(_3);
@@ -59,5 +63,6 @@ fn main() {
 //         Validate(Release, [_0: bool, _4: *mut i32]);
 //         _0 = const write_42(_4) -> bb1;
 //     }
+//     ...
 // }
 // END rustc.node46.EraseRegions.after.mir