- // 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<i32>; // 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<i32>; // 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(<ZST>))
                                           // mir::Constant
                                           // + span: $DIR/issue-73223.rs:4:17: 4:23
                                           // + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
          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:20: 3:21
          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(<ZST>))
                                           // mir::Constant
                                           // + span: $SRC_DIR/libcore/macros/mod.rs:LL:COL
                                           // + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
          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(<ZST>))
                                           // mir::Constant
                                           // + span: $DIR/issue-73223.rs:1:11: 9:2
                                           // + literal: Const { ty: (), val: Value(Scalar(<ZST>)) }
          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(<ZST>))
                                           // 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(<ZST>)) }
          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::<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>>(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::<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>>}
                                           // + val: Value(Scalar(<ZST>))
                                           // 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::<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>>}, val: Value(Scalar(<ZST>)) }
      }
  
      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(<ZST>))
                                           // 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(<ZST>)) }
      }
  
      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(<ZST>))
                                           // 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(<ZST>)) }
          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::<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>>(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::<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>>}
                                           // + val: Value(Scalar(<ZST>))
                                           // 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::<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>>}, val: Value(Scalar(<ZST>)) }
      }
  
      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(<ZST>))
                                           // 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(<ZST>)) }
      }
  
      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(<ZST>))
                                           // 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(<ZST>)) }
      }
  }
  
