- // MIR for `simple` before DataflowConstProp
+ // MIR for `simple` after DataflowConstProp
  
  fn simple() -> () {
      let mut _0: ();
      let _1: E;
      let mut _3: isize;
      scope 1 {
          debug e => _1;
          let _2: i32;
          let _4: i32;
          let _5: i32;
          scope 2 {
              debug x => _2;
          }
          scope 3 {
              debug x1 => _4;
          }
          scope 4 {
              debug x2 => _5;
          }
      }
  
      bb0: {
          StorageLive(_1);
-         _1 = E::V1(const 0_i32);
+         _1 = const E::V1(0_i32);
          StorageLive(_2);
-         _3 = discriminant(_1);
-         switchInt(move _3) -> [0: bb3, 1: bb2, otherwise: bb1];
+         _3 = const 0_isize;
+         switchInt(const 0_isize) -> [0: bb3, 1: bb2, otherwise: bb1];
      }
  
      bb1: {
          unreachable;
      }
  
      bb2: {
          StorageLive(_5);
          _5 = copy ((_1 as V2).0: i32);
          _2 = copy _5;
          StorageDead(_5);
          goto -> bb4;
      }
  
      bb3: {
          StorageLive(_4);
-         _4 = copy ((_1 as V1).0: i32);
-         _2 = copy _4;
+         _4 = const 0_i32;
+         _2 = const 0_i32;
          StorageDead(_4);
          goto -> bb4;
      }
  
      bb4: {
          _0 = const ();
          StorageDead(_2);
          StorageDead(_1);
          return;
      }
  }
+ 
+ ALLOC0 (size: 8, align: 4) { .. }
  
