- // MIR for `repeat` before GVN
+ // MIR for `repeat` after GVN
  
  fn repeat() -> () {
      let mut _0: ();
      let _1: i32;
      let mut _3: i32;
      let mut _4: i32;
      let mut _5: i32;
      let mut _6: i32;
      let mut _7: i32;
      let mut _8: i32;
      let mut _9: i32;
      let mut _10: i32;
      let mut _11: i32;
      let mut _12: i32;
      scope 1 {
          debug val => _1;
          let _2: [i32; 10];
          scope 2 {
              debug array => _2;
          }
      }
  
      bb0: {
-         StorageLive(_1);
+         nop;
          _1 = const 5_i32;
          StorageLive(_2);
          StorageLive(_3);
-         _3 = copy _1;
+         _3 = const 5_i32;
          StorageLive(_4);
-         _4 = copy _1;
+         _4 = const 5_i32;
          StorageLive(_5);
-         _5 = copy _1;
+         _5 = const 5_i32;
          StorageLive(_6);
-         _6 = copy _1;
+         _6 = const 5_i32;
          StorageLive(_7);
-         _7 = copy _1;
+         _7 = const 5_i32;
          StorageLive(_8);
-         _8 = copy _1;
+         _8 = const 5_i32;
          StorageLive(_9);
-         _9 = copy _1;
+         _9 = const 5_i32;
          StorageLive(_10);
-         _10 = copy _1;
+         _10 = const 5_i32;
          StorageLive(_11);
-         _11 = copy _1;
+         _11 = const 5_i32;
          StorageLive(_12);
-         _12 = copy _1;
-         _2 = [move _3, move _4, move _5, move _6, move _7, move _8, move _9, move _10, move _11, move _12];
+         _12 = const 5_i32;
+         _2 = [const 5_i32; 10];
          StorageDead(_12);
          StorageDead(_11);
          StorageDead(_10);
          StorageDead(_9);
          StorageDead(_8);
          StorageDead(_7);
          StorageDead(_6);
          StorageDead(_5);
          StorageDead(_4);
          StorageDead(_3);
          _0 = const ();
          StorageDead(_2);
-         StorageDead(_1);
+         nop;
          return;
      }
  }
  
