From e3f599c15cceb38159a5690a21befbe7f36f5914 Mon Sep 17 00:00:00 2001 From: Wesley Wiser Date: Sun, 21 Jun 2020 20:54:53 -0400 Subject: [PATCH] Add test for simplify-try misoptimization --- src/test/mir-opt/issue-73223.rs | 13 + .../32bit/rustc.main.PreCodegen.diff | 249 ++++++++++++ .../32bit/rustc.main.SimplifyArmIdentity.diff | 377 ++++++++++++++++++ .../64bit/rustc.main.PreCodegen.diff | 249 ++++++++++++ .../64bit/rustc.main.SimplifyArmIdentity.diff | 377 ++++++++++++++++++ 5 files changed, 1265 insertions(+) create mode 100644 src/test/mir-opt/issue-73223.rs create mode 100644 src/test/mir-opt/issue-73223/32bit/rustc.main.PreCodegen.diff create mode 100644 src/test/mir-opt/issue-73223/32bit/rustc.main.SimplifyArmIdentity.diff create mode 100644 src/test/mir-opt/issue-73223/64bit/rustc.main.PreCodegen.diff create mode 100644 src/test/mir-opt/issue-73223/64bit/rustc.main.SimplifyArmIdentity.diff diff --git a/src/test/mir-opt/issue-73223.rs b/src/test/mir-opt/issue-73223.rs new file mode 100644 index 00000000000..d93805e6cd1 --- /dev/null +++ b/src/test/mir-opt/issue-73223.rs @@ -0,0 +1,13 @@ +fn main() { + let split = match Some(1) { + Some(v) => v, + None => return, + }; + + let _prev = Some(split); + assert_eq!(split, 1); +} + +// EMIT_MIR_FOR_EACH_BIT_WIDTH +// EMIT_MIR rustc.main.SimplifyArmIdentity.diff +// EMIT_MIR rustc.main.PreCodegen.diff diff --git a/src/test/mir-opt/issue-73223/32bit/rustc.main.PreCodegen.diff b/src/test/mir-opt/issue-73223/32bit/rustc.main.PreCodegen.diff new file mode 100644 index 00000000000..887ebfc8c64 --- /dev/null +++ b/src/test/mir-opt/issue-73223/32bit/rustc.main.PreCodegen.diff @@ -0,0 +1,249 @@ +- // MIR for `main` before PreCodegen ++ // MIR for `main` after PreCodegen + + fn main() -> () { + let mut _0: (); // return place in scope 0 at $DIR/issue-73223.rs:1:11: 1:11 + let _1: i32; // in scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + let mut _2: std::option::Option; // in scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + let _3: i32; // in scope 0 at $DIR/issue-73223.rs:3:14: 3:15 + let mut _5: (&i32, &i32); // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _6: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _9: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _10: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _11: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _12: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _13: &std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _14: std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _15: &[&str]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _16: &[std::fmt::ArgumentV1]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _17: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _18: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _19: (&&i32, &&i32); // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _20: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _21: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _22: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _23: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _26: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _27: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _28: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _29: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 1 { + debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14 + let _4: std::option::Option; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14 + scope 3 { + debug _prev => _4; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14 + let _7: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _8: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 4 { + debug left_val => _7; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug right_val => _8; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _24: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _25: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 5 { + debug arg0 => _24; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug arg1 => _25; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 6 { + debug x => _24; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _27; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _30: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _31: &core::fmt::Opaque; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + } + scope 8 { + debug x => _25; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _29; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _32: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _33: &core::fmt::Opaque; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + scope 10 { + debug pieces => _15; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug args => _16; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _34: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + } + } + scope 2 { + debug v => _3; // in scope 2 at $DIR/issue-73223.rs:3:14: 3:15 + } + scope 7 { + } + scope 9 { + } + + bb0: { + StorageLive(_1); // scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + StorageLive(_2); // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + ((_2 as Some).0: i32) = const 1_i32; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + // ty::Const + // + ty: i32 + // + val: Value(Scalar(0x00000001)) + // mir::Constant + // + span: $DIR/issue-73223.rs:2:28: 2:29 + // + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) } + discriminant(_2) = 1; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + _4 = move _2; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 + StorageDead(_2); // scope 0 at $DIR/issue-73223.rs:5:6: 5:7 + StorageLive(_4); // scope 1 at $DIR/issue-73223.rs:7:9: 7:14 + StorageLive(_5); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_6); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _6 = &_1; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_5.0: &i32) = move _6; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_5.1: &i32) = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &i32 + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &i32, val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) } + StorageDead(_6); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_7); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _7 = (_5.0: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _8 = (_5.1: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_9); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_10); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_11); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _11 = (*_7); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_12); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _12 = (*_8); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _10 = Eq(move _11, move _12); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_12); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_11); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _9 = Not(move _10); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_10); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + switchInt(_9) -> [false: bb1, otherwise: bb2]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + } + + bb1: { + StorageDead(_9); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_7); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_5); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _0 = const (); // scope 0 at $DIR/issue-73223.rs:1:11: 9:2 + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $DIR/issue-73223.rs:1:11: 9:2 + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_4); // scope 1 at $DIR/issue-73223.rs:9:1: 9:2 + StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2 + return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2 + } + + bb2: { + StorageLive(_14); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _15 = const main::promoted[0] as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &[&str; 3] + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &[&str; 3], val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) } + StorageLive(_18); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_19); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_20); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_21); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _21 = _7; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _20 = &_21; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_22); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_23); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _23 = _8; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _22 = &_23; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_19.0: &&i32) = move _20; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + (_19.1: &&i32) = move _22; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_22); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_20); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _24 = (_19.0: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _25 = (_19.1: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_26); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _27 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_30); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _30 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _27) -> bb3; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb3: { + StorageLive(_31); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _31 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _24) -> bb4; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb4: { + (_26.0: &core::fmt::Opaque) = move _31; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_26.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _30; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_31); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_30); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_28); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _29 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_32); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _32 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _29) -> bb5; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb5: { + StorageLive(_33); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _33 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _25) -> bb6; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb6: { + (_28.0: &core::fmt::Opaque) = move _33; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_28.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _32; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_33); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_32); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _18 = [move _26, move _28]; // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_28); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_26); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _17 = &_18; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _16 = move _17 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_34); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + discriminant(_34) = 0; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_14.0: &[&str]) = move _15; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_14.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _34; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_14.2: &[std::fmt::ArgumentV1]) = move _16; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_34); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _13 = &_14; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + const std::rt::begin_panic_fmt(move _13); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + // ty::Const + // + ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libstd/macros.rs:LL:COL + // + literal: Const { ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt}, val: Value(Scalar()) } + } + } + diff --git a/src/test/mir-opt/issue-73223/32bit/rustc.main.SimplifyArmIdentity.diff b/src/test/mir-opt/issue-73223/32bit/rustc.main.SimplifyArmIdentity.diff new file mode 100644 index 00000000000..2c1f81f2d73 --- /dev/null +++ b/src/test/mir-opt/issue-73223/32bit/rustc.main.SimplifyArmIdentity.diff @@ -0,0 +1,377 @@ +- // MIR for `main` before SimplifyArmIdentity ++ // MIR for `main` after SimplifyArmIdentity + + fn main() -> () { + let mut _0: (); // return place in scope 0 at $DIR/issue-73223.rs:1:11: 1:11 + let _1: i32; // in scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + let mut _2: std::option::Option; // in scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + let mut _3: isize; // in scope 0 at $DIR/issue-73223.rs:3:9: 3:16 + let _4: i32; // in scope 0 at $DIR/issue-73223.rs:3:14: 3:15 + let mut _5: !; // in scope 0 at $DIR/issue-73223.rs:4:17: 4:23 + let mut _7: i32; // in scope 0 at $DIR/issue-73223.rs:7:22: 7:27 + let _8: (); // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _9: (&i32, &i32); // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _10: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _11: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _12: i32; // in scope 0 at $DIR/issue-73223.rs:8:23: 8:24 + let mut _15: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _16: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _17: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _18: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _19: !; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _20: &std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _21: &std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _22: std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _23: &[&str]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _24: &[&str; 3]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _25: &[&str; 3]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _26: [&str; 3]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _27: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _28: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _29: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _30: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _31: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _32: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _33: &[std::fmt::ArgumentV1]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _34: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _35: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _36: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _37: (&&i32, &&i32); // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _38: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _39: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _40: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _41: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _44: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _45: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _46: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _47: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _48: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _49: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 1 { + debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14 + let _6: std::option::Option; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14 + scope 3 { + debug _prev => _6; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14 + let _13: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _14: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _51: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 4 { + debug left_val => _13; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug right_val => _14; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _42: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _43: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _50: &[&str; 3]; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 5 { + debug arg0 => _42; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug arg1 => _43; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 6 { + debug x => _45; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _46; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _52: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _53: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _54: &core::fmt::Opaque; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _55: &&i32; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + } + scope 8 { + debug x => _48; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _49; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _56: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _57: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _58: &core::fmt::Opaque; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _59: &&i32; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + scope 10 { + debug pieces => _23; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug args => _33; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _60: &[&str]; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _61: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _62: &[std::fmt::ArgumentV1]; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + } + } + scope 2 { + debug v => _4; // in scope 2 at $DIR/issue-73223.rs:3:14: 3:15 + } + scope 7 { + } + scope 9 { + } + + bb0: { + StorageLive(_1); // scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + StorageLive(_2); // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + ((_2 as Some).0: i32) = const 1_i32; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + // ty::Const + // + ty: i32 + // + val: Value(Scalar(0x00000001)) + // mir::Constant + // + span: $DIR/issue-73223.rs:2:28: 2:29 + // + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) } + discriminant(_2) = 1; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + _3 = const 1_isize; // scope 0 at $DIR/issue-73223.rs:3:9: 3:16 + // ty::Const + // + ty: isize + // + val: Value(Scalar(0x00000001)) + // mir::Constant + // + span: $DIR/issue-73223.rs:3:9: 3:16 + // + literal: Const { ty: isize, val: Value(Scalar(0x00000001)) } + goto -> bb2; // scope 0 at $DIR/issue-73223.rs:3:9: 3:16 + } + + bb1: { + _0 = const (); // scope 0 at $DIR/issue-73223.rs:4:17: 4:23 + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $DIR/issue-73223.rs:4:17: 4:23 + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_2); // scope 0 at $DIR/issue-73223.rs:5:6: 5:7 + StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2 + goto -> bb3; // scope 0 at $DIR/issue-73223.rs:4:17: 4:23 + } + + bb2: { +- StorageLive(_4); // scope 0 at $DIR/issue-73223.rs:3:14: 3:15 +- _4 = ((_2 as Some).0: i32); // scope 0 at $DIR/issue-73223.rs:3:14: 3:15 +- _1 = _4; // scope 2 at $DIR/issue-73223.rs:3:20: 3:21 +- StorageDead(_4); // scope 0 at $DIR/issue-73223.rs:3:21: 3:22 ++ _6 = move _2; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 + StorageDead(_2); // scope 0 at $DIR/issue-73223.rs:5:6: 5:7 + StorageLive(_6); // scope 1 at $DIR/issue-73223.rs:7:9: 7:14 +- StorageLive(_7); // scope 1 at $DIR/issue-73223.rs:7:22: 7:27 +- _7 = _1; // scope 1 at $DIR/issue-73223.rs:7:22: 7:27 +- ((_6 as Some).0: i32) = move _7; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 +- discriminant(_6) = 1; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 +- StorageDead(_7); // scope 1 at $DIR/issue-73223.rs:7:27: 7:28 + StorageLive(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_9); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_10); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _10 = &_1; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_11); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _51 = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &i32 + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &i32, val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) } + _11 = _51; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_9.0: &i32) = move _10; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_9.1: &i32) = move _11; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_11); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_10); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_13); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _13 = (_9.0: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_14); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _14 = (_9.1: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_15); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_16); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_17); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _17 = (*_13); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_18); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _18 = (*_14); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _16 = Eq(move _17, move _18); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_18); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_17); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _15 = Not(move _16); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_16); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + switchInt(_15) -> [false: bb4, otherwise: bb5]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + } + + bb3: { + return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2 + } + + bb4: { + _8 = const (); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_15); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_14); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_13); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_9); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _0 = const (); // scope 0 at $DIR/issue-73223.rs:1:11: 9:2 + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $DIR/issue-73223.rs:1:11: 9:2 + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_6); // scope 1 at $DIR/issue-73223.rs:9:1: 9:2 + StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2 + goto -> bb3; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2 + } + + bb5: { + StorageLive(_19); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_20); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_21); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_22); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_23); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_24); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_25); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _50 = const main::promoted[0]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &[&str; 3] + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &[&str; 3], val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) } + _25 = _50; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _24 = _25; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _23 = move _24 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_24); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_33); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_34); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_35); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_36); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_37); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_38); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_39); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _39 = _13; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _38 = &_39; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_40); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_41); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _41 = _14; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _40 = &_41; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_37.0: &&i32) = move _38; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + (_37.1: &&i32) = move _40; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_40); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_38); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_42); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _42 = (_37.0: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_43); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _43 = (_37.1: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_44); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_45); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _45 = _42; // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_46); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _46 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_52); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_53); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _53 = _46; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _52 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _53) -> bb6; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb6: { + StorageDead(_53); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_54); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_55); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _55 = _45; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _54 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _55) -> bb7; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb7: { + StorageDead(_55); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_44.0: &core::fmt::Opaque) = move _54; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_44.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _52; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_54); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_52); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_46); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_45); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_47); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_48); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _48 = _43; // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_49); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _49 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_56); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_57); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _57 = _49; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _56 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _57) -> bb8; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb8: { + StorageDead(_57); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_58); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_59); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _59 = _48; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _58 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _59) -> bb9; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb9: { + StorageDead(_59); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_47.0: &core::fmt::Opaque) = move _58; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_47.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _56; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_58); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_56); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_49); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_48); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _36 = [move _44, move _47]; // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_47); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_44); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_43); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_42); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _35 = &_36; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _34 = _35; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _33 = move _34 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_34); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_60); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _60 = _23; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_61); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + discriminant(_61) = 0; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_62); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _62 = _33; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_22.0: &[&str]) = move _60; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_22.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _61; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_22.2: &[std::fmt::ArgumentV1]) = move _62; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_62); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_61); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_60); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_33); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_23); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _21 = &_22; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _20 = _21; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + const std::rt::begin_panic_fmt(move _20); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + // ty::Const + // + ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libstd/macros.rs:LL:COL + // + literal: Const { ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt}, val: Value(Scalar()) } + } + } + diff --git a/src/test/mir-opt/issue-73223/64bit/rustc.main.PreCodegen.diff b/src/test/mir-opt/issue-73223/64bit/rustc.main.PreCodegen.diff new file mode 100644 index 00000000000..887ebfc8c64 --- /dev/null +++ b/src/test/mir-opt/issue-73223/64bit/rustc.main.PreCodegen.diff @@ -0,0 +1,249 @@ +- // MIR for `main` before PreCodegen ++ // MIR for `main` after PreCodegen + + fn main() -> () { + let mut _0: (); // return place in scope 0 at $DIR/issue-73223.rs:1:11: 1:11 + let _1: i32; // in scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + let mut _2: std::option::Option; // in scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + let _3: i32; // in scope 0 at $DIR/issue-73223.rs:3:14: 3:15 + let mut _5: (&i32, &i32); // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _6: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _9: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _10: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _11: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _12: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _13: &std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _14: std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _15: &[&str]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _16: &[std::fmt::ArgumentV1]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _17: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _18: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _19: (&&i32, &&i32); // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _20: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _21: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _22: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _23: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _26: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _27: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _28: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _29: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 1 { + debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14 + let _4: std::option::Option; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14 + scope 3 { + debug _prev => _4; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14 + let _7: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _8: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 4 { + debug left_val => _7; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug right_val => _8; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _24: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _25: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 5 { + debug arg0 => _24; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug arg1 => _25; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 6 { + debug x => _24; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _27; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _30: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _31: &core::fmt::Opaque; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + } + scope 8 { + debug x => _25; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _29; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _32: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _33: &core::fmt::Opaque; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + scope 10 { + debug pieces => _15; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug args => _16; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _34: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + } + } + scope 2 { + debug v => _3; // in scope 2 at $DIR/issue-73223.rs:3:14: 3:15 + } + scope 7 { + } + scope 9 { + } + + bb0: { + StorageLive(_1); // scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + StorageLive(_2); // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + ((_2 as Some).0: i32) = const 1_i32; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + // ty::Const + // + ty: i32 + // + val: Value(Scalar(0x00000001)) + // mir::Constant + // + span: $DIR/issue-73223.rs:2:28: 2:29 + // + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) } + discriminant(_2) = 1; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + _4 = move _2; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 + StorageDead(_2); // scope 0 at $DIR/issue-73223.rs:5:6: 5:7 + StorageLive(_4); // scope 1 at $DIR/issue-73223.rs:7:9: 7:14 + StorageLive(_5); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_6); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _6 = &_1; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_5.0: &i32) = move _6; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_5.1: &i32) = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &i32 + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &i32, val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) } + StorageDead(_6); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_7); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _7 = (_5.0: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _8 = (_5.1: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_9); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_10); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_11); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _11 = (*_7); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_12); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _12 = (*_8); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _10 = Eq(move _11, move _12); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_12); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_11); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _9 = Not(move _10); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_10); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + switchInt(_9) -> [false: bb1, otherwise: bb2]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + } + + bb1: { + StorageDead(_9); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_7); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_5); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _0 = const (); // scope 0 at $DIR/issue-73223.rs:1:11: 9:2 + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $DIR/issue-73223.rs:1:11: 9:2 + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_4); // scope 1 at $DIR/issue-73223.rs:9:1: 9:2 + StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2 + return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2 + } + + bb2: { + StorageLive(_14); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _15 = const main::promoted[0] as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &[&str; 3] + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &[&str; 3], val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) } + StorageLive(_18); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_19); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_20); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_21); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _21 = _7; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _20 = &_21; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_22); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_23); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _23 = _8; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _22 = &_23; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_19.0: &&i32) = move _20; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + (_19.1: &&i32) = move _22; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_22); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_20); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _24 = (_19.0: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _25 = (_19.1: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_26); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _27 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_30); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _30 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _27) -> bb3; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb3: { + StorageLive(_31); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _31 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _24) -> bb4; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb4: { + (_26.0: &core::fmt::Opaque) = move _31; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_26.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _30; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_31); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_30); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_28); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _29 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_32); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _32 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _29) -> bb5; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb5: { + StorageLive(_33); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _33 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _25) -> bb6; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb6: { + (_28.0: &core::fmt::Opaque) = move _33; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_28.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _32; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_33); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_32); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _18 = [move _26, move _28]; // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_28); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_26); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _17 = &_18; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _16 = move _17 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_34); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + discriminant(_34) = 0; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_14.0: &[&str]) = move _15; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_14.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _34; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_14.2: &[std::fmt::ArgumentV1]) = move _16; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_34); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _13 = &_14; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + const std::rt::begin_panic_fmt(move _13); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + // ty::Const + // + ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libstd/macros.rs:LL:COL + // + literal: Const { ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt}, val: Value(Scalar()) } + } + } + diff --git a/src/test/mir-opt/issue-73223/64bit/rustc.main.SimplifyArmIdentity.diff b/src/test/mir-opt/issue-73223/64bit/rustc.main.SimplifyArmIdentity.diff new file mode 100644 index 00000000000..3233cc349f7 --- /dev/null +++ b/src/test/mir-opt/issue-73223/64bit/rustc.main.SimplifyArmIdentity.diff @@ -0,0 +1,377 @@ +- // MIR for `main` before SimplifyArmIdentity ++ // MIR for `main` after SimplifyArmIdentity + + fn main() -> () { + let mut _0: (); // return place in scope 0 at $DIR/issue-73223.rs:1:11: 1:11 + let _1: i32; // in scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + let mut _2: std::option::Option; // in scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + let mut _3: isize; // in scope 0 at $DIR/issue-73223.rs:3:9: 3:16 + let _4: i32; // in scope 0 at $DIR/issue-73223.rs:3:14: 3:15 + let mut _5: !; // in scope 0 at $DIR/issue-73223.rs:4:17: 4:23 + let mut _7: i32; // in scope 0 at $DIR/issue-73223.rs:7:22: 7:27 + let _8: (); // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _9: (&i32, &i32); // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _10: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _11: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _12: i32; // in scope 0 at $DIR/issue-73223.rs:8:23: 8:24 + let mut _15: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _16: bool; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _17: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _18: i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _19: !; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _20: &std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _21: &std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _22: std::fmt::Arguments; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _23: &[&str]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _24: &[&str; 3]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _25: &[&str; 3]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _26: [&str; 3]; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _27: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _28: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _29: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _30: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _31: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _32: &str; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _33: &[std::fmt::ArgumentV1]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _34: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _35: &[std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let _36: [std::fmt::ArgumentV1; 2]; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _37: (&&i32, &&i32); // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _38: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _39: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _40: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _41: &i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _44: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _45: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _46: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _47: std::fmt::ArgumentV1; // in scope 0 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _48: &&i32; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _49: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 0 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 1 { + debug split => _1; // in scope 1 at $DIR/issue-73223.rs:2:9: 2:14 + let _6: std::option::Option; // in scope 1 at $DIR/issue-73223.rs:7:9: 7:14 + scope 3 { + debug _prev => _6; // in scope 3 at $DIR/issue-73223.rs:7:9: 7:14 + let _13: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _14: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _51: &i32; // in scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 4 { + debug left_val => _13; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug right_val => _14; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _42: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let _43: &&i32; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + let mut _50: &[&str; 3]; // in scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 5 { + debug arg0 => _42; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + debug arg1 => _43; // in scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + scope 6 { + debug x => _45; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _46; // in scope 6 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _52: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _53: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _54: &core::fmt::Opaque; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _55: &&i32; // in scope 6 at $SRC_DIR/libstd/macros.rs:LL:COL + } + scope 8 { + debug x => _48; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug f => _49; // in scope 8 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _56: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _57: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _58: &core::fmt::Opaque; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _59: &&i32; // in scope 8 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + scope 10 { + debug pieces => _23; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + debug args => _33; // in scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + let mut _60: &[&str]; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _61: std::option::Option<&[std::fmt::rt::v1::Argument]>; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + let mut _62: &[std::fmt::ArgumentV1]; // in scope 10 at $SRC_DIR/libstd/macros.rs:LL:COL + } + } + } + } + scope 2 { + debug v => _4; // in scope 2 at $DIR/issue-73223.rs:3:14: 3:15 + } + scope 7 { + } + scope 9 { + } + + bb0: { + StorageLive(_1); // scope 0 at $DIR/issue-73223.rs:2:9: 2:14 + StorageLive(_2); // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + ((_2 as Some).0: i32) = const 1_i32; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + // ty::Const + // + ty: i32 + // + val: Value(Scalar(0x00000001)) + // mir::Constant + // + span: $DIR/issue-73223.rs:2:28: 2:29 + // + literal: Const { ty: i32, val: Value(Scalar(0x00000001)) } + discriminant(_2) = 1; // scope 0 at $DIR/issue-73223.rs:2:23: 2:30 + _3 = const 1_isize; // scope 0 at $DIR/issue-73223.rs:3:9: 3:16 + // ty::Const + // + ty: isize + // + val: Value(Scalar(0x0000000000000001)) + // mir::Constant + // + span: $DIR/issue-73223.rs:3:9: 3:16 + // + literal: Const { ty: isize, val: Value(Scalar(0x0000000000000001)) } + goto -> bb2; // scope 0 at $DIR/issue-73223.rs:3:9: 3:16 + } + + bb1: { + _0 = const (); // scope 0 at $DIR/issue-73223.rs:4:17: 4:23 + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $DIR/issue-73223.rs:4:17: 4:23 + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_2); // scope 0 at $DIR/issue-73223.rs:5:6: 5:7 + StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2 + goto -> bb3; // scope 0 at $DIR/issue-73223.rs:4:17: 4:23 + } + + bb2: { +- StorageLive(_4); // scope 0 at $DIR/issue-73223.rs:3:14: 3:15 +- _4 = ((_2 as Some).0: i32); // scope 0 at $DIR/issue-73223.rs:3:14: 3:15 +- _1 = _4; // scope 2 at $DIR/issue-73223.rs:3:20: 3:21 +- StorageDead(_4); // scope 0 at $DIR/issue-73223.rs:3:21: 3:22 ++ _6 = move _2; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 + StorageDead(_2); // scope 0 at $DIR/issue-73223.rs:5:6: 5:7 + StorageLive(_6); // scope 1 at $DIR/issue-73223.rs:7:9: 7:14 +- StorageLive(_7); // scope 1 at $DIR/issue-73223.rs:7:22: 7:27 +- _7 = _1; // scope 1 at $DIR/issue-73223.rs:7:22: 7:27 +- ((_6 as Some).0: i32) = move _7; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 +- discriminant(_6) = 1; // scope 1 at $DIR/issue-73223.rs:7:17: 7:28 +- StorageDead(_7); // scope 1 at $DIR/issue-73223.rs:7:27: 7:28 + StorageLive(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_9); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_10); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _10 = &_1; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_11); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _51 = const main::promoted[1]; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &i32 + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &i32, val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[1])) } + _11 = _51; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_9.0: &i32) = move _10; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_9.1: &i32) = move _11; // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_11); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_10); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_13); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _13 = (_9.0: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_14); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _14 = (_9.1: &i32); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_15); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_16); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_17); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _17 = (*_13); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_18); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _18 = (*_14); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _16 = Eq(move _17, move _18); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_18); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_17); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _15 = Not(move _16); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_16); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + switchInt(_15) -> [false: bb4, otherwise: bb5]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + } + + bb3: { + return; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2 + } + + bb4: { + _8 = const (); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_15); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_14); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_13); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_9); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_8); // scope 3 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _0 = const (); // scope 0 at $DIR/issue-73223.rs:1:11: 9:2 + // ty::Const + // + ty: () + // + val: Value(Scalar()) + // mir::Constant + // + span: $DIR/issue-73223.rs:1:11: 9:2 + // + literal: Const { ty: (), val: Value(Scalar()) } + StorageDead(_6); // scope 1 at $DIR/issue-73223.rs:9:1: 9:2 + StorageDead(_1); // scope 0 at $DIR/issue-73223.rs:9:1: 9:2 + goto -> bb3; // scope 0 at $DIR/issue-73223.rs:9:2: 9:2 + } + + bb5: { + StorageLive(_19); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_20); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_21); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_22); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_23); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_24); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_25); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _50 = const main::promoted[0]; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: &[&str; 3] + // + val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: &[&str; 3], val: Unevaluated(DefId(0:3 ~ issue_73223[317d]::main[0]), [], Some(promoted[0])) } + _25 = _50; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _24 = _25; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _23 = move _24 as &[&str] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageDead(_24); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_33); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_34); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_35); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_36); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_37); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_38); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_39); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _39 = _13; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _38 = &_39; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_40); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_41); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _41 = _14; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _40 = &_41; // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + (_37.0: &&i32) = move _38; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + (_37.1: &&i32) = move _40; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_40); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_38); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_42); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _42 = (_37.0: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_43); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _43 = (_37.1: &&i32); // scope 4 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_44); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_45); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _45 = _42; // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_46); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _46 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_52); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_53); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _53 = _46; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _52 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _53) -> bb6; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb6: { + StorageDead(_53); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_54); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_55); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _55 = _45; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _54 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _55) -> bb7; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb7: { + StorageDead(_55); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_44.0: &core::fmt::Opaque) = move _54; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_44.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _52; // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_54); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_52); // scope 7 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_46); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_45); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_47); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_48); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _48 = _43; // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + StorageLive(_49); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + _49 = const <&i32 as std::fmt::Debug>::fmt as for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> (Pointer(ReifyFnPointer)); // scope 5 at $SRC_DIR/libcore/macros/mod.rs:LL:COL + // ty::Const + // + ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL + // + literal: Const { ty: for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {<&i32 as std::fmt::Debug>::fmt}, val: Value(Scalar()) } + StorageLive(_56); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_57); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _57 = _49; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _56 = const std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>(move _57) -> bb8; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(for<'r, 's, 't0> fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) -> for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error> {std::intrinsics::transmute:: fn(&'r &i32, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>, for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>>}, val: Value(Scalar()) } + } + + bb8: { + StorageDead(_57); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_58); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_59); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _59 = _48; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _58 = const std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>(move _59) -> bb9; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // ty::Const + // + ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libcore/fmt/mod.rs:LL:COL + // + literal: Const { ty: unsafe extern "rust-intrinsic" fn(&&i32) -> &core::fmt::Opaque {std::intrinsics::transmute::<&&i32, &core::fmt::Opaque>}, val: Value(Scalar()) } + } + + bb9: { + StorageDead(_59); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_47.0: &core::fmt::Opaque) = move _58; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_47.1: for<'r, 's, 't0> fn(&'r core::fmt::Opaque, &'s mut std::fmt::Formatter<'t0>) -> std::result::Result<(), std::fmt::Error>) = move _56; // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_58); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_56); // scope 9 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_49); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_48); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + _36 = [move _44, move _47]; // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_47); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_44); // scope 5 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_43); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_42); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _35 = &_36; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _34 = _35; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _33 = move _34 as &[std::fmt::ArgumentV1] (Pointer(Unsize)); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_34); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageLive(_60); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _60 = _23; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_61); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + discriminant(_61) = 0; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageLive(_62); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + _62 = _33; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_22.0: &[&str]) = move _60; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_22.1: std::option::Option<&[std::fmt::rt::v1::Argument]>) = move _61; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + (_22.2: &[std::fmt::ArgumentV1]) = move _62; // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_62); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_61); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_60); // scope 10 at $SRC_DIR/libcore/fmt/mod.rs:LL:COL + StorageDead(_33); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + StorageDead(_23); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _21 = &_22; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + _20 = _21; // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + const std::rt::begin_panic_fmt(move _20); // scope 4 at $SRC_DIR/libstd/macros.rs:LL:COL + // ty::Const + // + ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt} + // + val: Value(Scalar()) + // mir::Constant + // + span: $SRC_DIR/libstd/macros.rs:LL:COL + // + literal: Const { ty: for<'r, 's> fn(&'r std::fmt::Arguments<'s>) -> ! {std::rt::begin_panic_fmt}, val: Value(Scalar()) } + } + } +