- // MIR for `main` before DataflowConstProp
+ // MIR for `main` after DataflowConstProp
  
  fn main() -> () {
      let mut _0: ();
      let _1: i32;
      let mut _3: bool;
      let mut _4: i32;
      let mut _6: i32;
      let mut _8: bool;
      let mut _9: i32;
      let mut _10: i32;
      let mut _12: i32;
      scope 1 {
          debug a => _1;
          let _2: i32;
          scope 2 {
              debug b => _2;
              let _5: i32;
              scope 3 {
                  debug c => _5;
                  let _7: i32;
                  scope 4 {
                      debug d => _7;
                      let _11: i32;
                      scope 5 {
                          debug e => _11;
                      }
                  }
              }
          }
      }
  
      bb0: {
          StorageLive(_1);
          _1 = const 1_i32;
          StorageLive(_2);
          StorageLive(_3);
          StorageLive(_4);
-         _4 = copy _1;
-         _3 = Eq(move _4, const 1_i32);
-         switchInt(move _3) -> [0: bb2, otherwise: bb1];
+         _4 = const 1_i32;
+         _3 = const true;
+         switchInt(const true) -> [0: bb2, otherwise: bb1];
      }
  
      bb1: {
          StorageDead(_4);
          _2 = const 2_i32;
          goto -> bb3;
      }
  
      bb2: {
          StorageDead(_4);
          _2 = const 3_i32;
          goto -> bb3;
      }
  
      bb3: {
          StorageDead(_3);
          StorageLive(_5);
          StorageLive(_6);
-         _6 = copy _2;
-         _5 = Add(move _6, const 1_i32);
+         _6 = const 2_i32;
+         _5 = const 3_i32;
          StorageDead(_6);
          StorageLive(_7);
          StorageLive(_8);
          StorageLive(_9);
-         _9 = copy _1;
-         _8 = Eq(move _9, const 1_i32);
-         switchInt(move _8) -> [0: bb5, otherwise: bb4];
+         _9 = const 1_i32;
+         _8 = const true;
+         switchInt(const true) -> [0: bb5, otherwise: bb4];
      }
  
      bb4: {
          StorageDead(_9);
-         _7 = copy _1;
+         _7 = const 1_i32;
          goto -> bb6;
      }
  
      bb5: {
          StorageDead(_9);
          StorageLive(_10);
          _10 = copy _1;
          _7 = Add(move _10, const 1_i32);
          StorageDead(_10);
          goto -> bb6;
      }
  
      bb6: {
          StorageDead(_8);
          StorageLive(_11);
          StorageLive(_12);
-         _12 = copy _7;
-         _11 = Add(move _12, const 1_i32);
+         _12 = const 1_i32;
+         _11 = const 2_i32;
          StorageDead(_12);
          _0 = const ();
          StorageDead(_11);
          StorageDead(_7);
          StorageDead(_5);
          StorageDead(_2);
          StorageDead(_1);
          return;
      }
  }
  
