summaryrefslogtreecommitdiffstats
path: root/src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir')
-rw-r--r--src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir b/src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir
new file mode 100644
index 000000000..72603dc5d
--- /dev/null
+++ b/src/test/mir-opt/issue_62289.test.ElaborateDrops.before.mir
@@ -0,0 +1,122 @@
+// MIR for `test` before ElaborateDrops
+
+fn test() -> Option<Box<u32>> {
+ let mut _0: std::option::Option<std::boxed::Box<u32>>; // return place in scope 0 at $DIR/issue-62289.rs:+0:14: +0:30
+ let mut _1: std::boxed::Box<u32>; // in scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ let mut _2: usize; // in scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ let mut _3: usize; // in scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ let mut _4: *mut u8; // in scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ let mut _5: std::boxed::Box<u32>; // in scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ let mut _6: std::ops::ControlFlow<std::option::Option<std::convert::Infallible>, u32>; // in scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ let mut _7: std::option::Option<u32>; // in scope 0 at $DIR/issue-62289.rs:+1:15: +1:19
+ let mut _8: isize; // in scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ let _9: std::option::Option<std::convert::Infallible>; // in scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ let mut _10: !; // in scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ let mut _11: std::option::Option<std::convert::Infallible>; // in scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ let _12: u32; // in scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ scope 1 {
+ }
+ scope 2 {
+ debug residual => _9; // in scope 2 at $DIR/issue-62289.rs:+1:19: +1:20
+ scope 3 {
+ }
+ }
+ scope 4 {
+ debug val => _12; // in scope 4 at $DIR/issue-62289.rs:+1:15: +1:20
+ scope 5 {
+ }
+ }
+
+ bb0: {
+ StorageLive(_1); // scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ _2 = SizeOf(u32); // scope 1 at $DIR/issue-62289.rs:+1:10: +1:21
+ _3 = AlignOf(u32); // scope 1 at $DIR/issue-62289.rs:+1:10: +1:21
+ _4 = alloc::alloc::exchange_malloc(move _2, move _3) -> bb1; // scope 1 at $DIR/issue-62289.rs:+1:10: +1:21
+ // mir::Constant
+ // + span: $DIR/issue-62289.rs:9:10: 9:21
+ // + literal: Const { ty: unsafe fn(usize, usize) -> *mut u8 {alloc::alloc::exchange_malloc}, val: Value(<ZST>) }
+ }
+
+ bb1: {
+ StorageLive(_5); // scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ _5 = ShallowInitBox(move _4, u32); // scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ StorageLive(_6); // scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ StorageLive(_7); // scope 0 at $DIR/issue-62289.rs:+1:15: +1:19
+ _7 = Option::<u32>::None; // scope 0 at $DIR/issue-62289.rs:+1:15: +1:19
+ _6 = <Option<u32> as Try>::branch(move _7) -> [return: bb2, unwind: bb12]; // scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ // mir::Constant
+ // + span: $DIR/issue-62289.rs:9:15: 9:20
+ // + literal: Const { ty: fn(Option<u32>) -> ControlFlow<<Option<u32> as Try>::Residual, <Option<u32> as Try>::Output> {<Option<u32> as Try>::branch}, val: Value(<ZST>) }
+ }
+
+ bb2: {
+ StorageDead(_7); // scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ _8 = discriminant(_6); // scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ switchInt(move _8) -> [0_isize: bb3, 1_isize: bb5, otherwise: bb4]; // scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ }
+
+ bb3: {
+ StorageLive(_12); // scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ _12 = ((_6 as Continue).0: u32); // scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ (*_5) = _12; // scope 5 at $DIR/issue-62289.rs:+1:15: +1:20
+ StorageDead(_12); // scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ _1 = move _5; // scope 0 at $DIR/issue-62289.rs:+1:10: +1:21
+ drop(_5) -> [return: bb7, unwind: bb11]; // scope 0 at $DIR/issue-62289.rs:+1:20: +1:21
+ }
+
+ bb4: {
+ unreachable; // scope 0 at $DIR/issue-62289.rs:+1:15: +1:20
+ }
+
+ bb5: {
+ StorageLive(_9); // scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ _9 = ((_6 as Break).0: std::option::Option<std::convert::Infallible>); // scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ StorageLive(_11); // scope 3 at $DIR/issue-62289.rs:+1:19: +1:20
+ _11 = _9; // scope 3 at $DIR/issue-62289.rs:+1:19: +1:20
+ _0 = <Option<Box<u32>> as FromResidual<Option<Infallible>>>::from_residual(move _11) -> [return: bb6, unwind: bb12]; // scope 3 at $DIR/issue-62289.rs:+1:15: +1:20
+ // mir::Constant
+ // + span: $DIR/issue-62289.rs:9:19: 9:20
+ // + literal: Const { ty: fn(Option<Infallible>) -> Option<Box<u32>> {<Option<Box<u32>> as FromResidual<Option<Infallible>>>::from_residual}, val: Value(<ZST>) }
+ }
+
+ bb6: {
+ StorageDead(_11); // scope 3 at $DIR/issue-62289.rs:+1:19: +1:20
+ StorageDead(_9); // scope 0 at $DIR/issue-62289.rs:+1:19: +1:20
+ drop(_5) -> bb9; // scope 0 at $DIR/issue-62289.rs:+1:20: +1:21
+ }
+
+ bb7: {
+ StorageDead(_5); // scope 0 at $DIR/issue-62289.rs:+1:20: +1:21
+ _0 = Option::<Box<u32>>::Some(move _1); // scope 0 at $DIR/issue-62289.rs:+1:5: +1:22
+ drop(_1) -> bb8; // scope 0 at $DIR/issue-62289.rs:+1:21: +1:22
+ }
+
+ bb8: {
+ StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:+1:21: +1:22
+ StorageDead(_6); // scope 0 at $DIR/issue-62289.rs:+2:1: +2:2
+ goto -> bb10; // scope 0 at $DIR/issue-62289.rs:+2:2: +2:2
+ }
+
+ bb9: {
+ StorageDead(_5); // scope 0 at $DIR/issue-62289.rs:+1:20: +1:21
+ StorageDead(_1); // scope 0 at $DIR/issue-62289.rs:+1:21: +1:22
+ StorageDead(_6); // scope 0 at $DIR/issue-62289.rs:+2:1: +2:2
+ goto -> bb10; // scope 0 at $DIR/issue-62289.rs:+2:2: +2:2
+ }
+
+ bb10: {
+ return; // scope 0 at $DIR/issue-62289.rs:+2:2: +2:2
+ }
+
+ bb11 (cleanup): {
+ drop(_1) -> bb13; // scope 0 at $DIR/issue-62289.rs:+1:21: +1:22
+ }
+
+ bb12 (cleanup): {
+ drop(_5) -> bb13; // scope 0 at $DIR/issue-62289.rs:+1:20: +1:21
+ }
+
+ bb13 (cleanup): {
+ resume; // scope 0 at $DIR/issue-62289.rs:+0:1: +2:2
+ }
+}