about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorGeorge Bateman <george.bateman16@gmail.com>2024-04-28 21:10:09 +0100
committerGeorge Bateman <george.bateman16@gmail.com>2024-04-28 21:10:09 +0100
commit2348eb271c95f7ba75333f41b1a303b3b7261b4f (patch)
tree2acd57ee5db64f6c6a61b0bcf9c8036be2433874 /tests
parentca79086c874278bf362391996be7b49ccf30160a (diff)
downloadrust-2348eb271c95f7ba75333f41b1a303b3b7261b4f.tar.gz
rust-2348eb271c95f7ba75333f41b1a303b3b7261b4f.zip
Update mir-opt tests, add proper regression test
Diffstat (limited to 'tests')
-rw-r--r--tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-abort.diff112
-rw-r--r--tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-unwind.diff112
-rw-r--r--tests/mir-opt/const_prop/offset_of.generic.GVN.panic-abort.diff99
-rw-r--r--tests/mir-opt/const_prop/offset_of.generic.GVN.panic-unwind.diff99
-rw-r--r--tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-abort.diff64
-rw-r--r--tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-unwind.diff64
-rw-r--r--tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-abort.diff58
-rw-r--r--tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-unwind.diff58
-rw-r--r--tests/mir-opt/dataflow-const-prop/offset_of.rs16
-rw-r--r--tests/ui/offset-of/offset-of-self.rs5
-rw-r--r--tests/ui/offset-of/offset-of-self.stderr10
-rw-r--r--tests/ui/offset-of/offset-of-temporaries.rs23
12 files changed, 202 insertions, 518 deletions
diff --git a/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-abort.diff b/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-abort.diff
index 5d94797905d..77a2c5bcccc 100644
--- a/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-abort.diff
@@ -4,33 +4,26 @@
   fn concrete() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
-      let mut _10: usize;
-      let mut _12: usize;
-      let mut _14: usize;
       scope 1 {
           debug x => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug y => _3;
-              let _5: usize;
+              debug y => _2;
+              let _3: usize;
               scope 3 {
-                  debug z0 => _5;
-                  let _7: usize;
+                  debug z0 => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug z1 => _7;
-                      let _9: usize;
+                      debug z1 => _4;
+                      let _5: usize;
                       scope 5 {
-                          debug eA0 => _9;
-                          let _11: usize;
+                          debug eA0 => _5;
+                          let _6: usize;
                           scope 6 {
-                              debug eA1 => _11;
-                              let _13: usize;
+                              debug eA1 => _6;
+                              let _7: usize;
                               scope 7 {
-                                  debug eC => _13;
+                                  debug eC => _7;
                               }
                           }
                       }
@@ -41,82 +34,33 @@
   
       bb0: {
           StorageLive(_1);
+-         _1 = OffsetOf(Alpha, [(0, 0)]);
++         _1 = const 4_usize;
           StorageLive(_2);
--         _2 = OffsetOf(Alpha, [(0, 0)]);
--         _1 = must_use::<usize>(move _2) -> [return: bb1, unwind unreachable];
-+         _2 = const 4_usize;
-+         _1 = must_use::<usize>(const 4_usize) -> [return: bb1, unwind unreachable];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+-         _2 = OffsetOf(Alpha, [(0, 1)]);
++         _2 = const 0_usize;
           StorageLive(_3);
+-         _3 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
++         _3 = const 2_usize;
           StorageLive(_4);
--         _4 = OffsetOf(Alpha, [(0, 1)]);
--         _3 = must_use::<usize>(move _4) -> [return: bb2, unwind unreachable];
-+         _4 = const 0_usize;
-+         _3 = must_use::<usize>(const 0_usize) -> [return: bb2, unwind unreachable];
-      }
-  
-      bb2: {
-          StorageDead(_4);
+-         _4 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
++         _4 = const 3_usize;
           StorageLive(_5);
+-         _5 = OffsetOf(Epsilon, [(0, 0)]);
++         _5 = const 1_usize;
           StorageLive(_6);
--         _6 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind unreachable];
+-         _6 = OffsetOf(Epsilon, [(0, 1)]);
 +         _6 = const 2_usize;
-+         _5 = must_use::<usize>(const 2_usize) -> [return: bb3, unwind unreachable];
-      }
-  
-      bb3: {
-          StorageDead(_6);
           StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind unreachable];
-+         _8 = const 3_usize;
-+         _7 = must_use::<usize>(const 3_usize) -> [return: bb4, unwind unreachable];
-      }
-  
-      bb4: {
-          StorageDead(_8);
-          StorageLive(_9);
-          StorageLive(_10);
--         _10 = OffsetOf(Epsilon, [(0, 0)]);
--         _9 = must_use::<usize>(move _10) -> [return: bb5, unwind unreachable];
-+         _10 = const 1_usize;
-+         _9 = must_use::<usize>(const 1_usize) -> [return: bb5, unwind unreachable];
-      }
-  
-      bb5: {
-          StorageDead(_10);
-          StorageLive(_11);
-          StorageLive(_12);
--         _12 = OffsetOf(Epsilon, [(0, 1)]);
--         _11 = must_use::<usize>(move _12) -> [return: bb6, unwind unreachable];
-+         _12 = const 2_usize;
-+         _11 = must_use::<usize>(const 2_usize) -> [return: bb6, unwind unreachable];
-      }
-  
-      bb6: {
-          StorageDead(_12);
-          StorageLive(_13);
-          StorageLive(_14);
--         _14 = OffsetOf(Epsilon, [(2, 0)]);
--         _13 = must_use::<usize>(move _14) -> [return: bb7, unwind unreachable];
-+         _14 = const 4_usize;
-+         _13 = must_use::<usize>(const 4_usize) -> [return: bb7, unwind unreachable];
-      }
-  
-      bb7: {
-          StorageDead(_14);
+-         _7 = OffsetOf(Epsilon, [(2, 0)]);
++         _7 = const 4_usize;
           _0 = const ();
-          StorageDead(_13);
-          StorageDead(_11);
-          StorageDead(_9);
           StorageDead(_7);
+          StorageDead(_6);
           StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-unwind.diff
index 4d890742ee9..77a2c5bcccc 100644
--- a/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/offset_of.concrete.GVN.panic-unwind.diff
@@ -4,33 +4,26 @@
   fn concrete() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
-      let mut _10: usize;
-      let mut _12: usize;
-      let mut _14: usize;
       scope 1 {
           debug x => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug y => _3;
-              let _5: usize;
+              debug y => _2;
+              let _3: usize;
               scope 3 {
-                  debug z0 => _5;
-                  let _7: usize;
+                  debug z0 => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug z1 => _7;
-                      let _9: usize;
+                      debug z1 => _4;
+                      let _5: usize;
                       scope 5 {
-                          debug eA0 => _9;
-                          let _11: usize;
+                          debug eA0 => _5;
+                          let _6: usize;
                           scope 6 {
-                              debug eA1 => _11;
-                              let _13: usize;
+                              debug eA1 => _6;
+                              let _7: usize;
                               scope 7 {
-                                  debug eC => _13;
+                                  debug eC => _7;
                               }
                           }
                       }
@@ -41,82 +34,33 @@
   
       bb0: {
           StorageLive(_1);
+-         _1 = OffsetOf(Alpha, [(0, 0)]);
++         _1 = const 4_usize;
           StorageLive(_2);
--         _2 = OffsetOf(Alpha, [(0, 0)]);
--         _1 = must_use::<usize>(move _2) -> [return: bb1, unwind continue];
-+         _2 = const 4_usize;
-+         _1 = must_use::<usize>(const 4_usize) -> [return: bb1, unwind continue];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+-         _2 = OffsetOf(Alpha, [(0, 1)]);
++         _2 = const 0_usize;
           StorageLive(_3);
+-         _3 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
++         _3 = const 2_usize;
           StorageLive(_4);
--         _4 = OffsetOf(Alpha, [(0, 1)]);
--         _3 = must_use::<usize>(move _4) -> [return: bb2, unwind continue];
-+         _4 = const 0_usize;
-+         _3 = must_use::<usize>(const 0_usize) -> [return: bb2, unwind continue];
-      }
-  
-      bb2: {
-          StorageDead(_4);
+-         _4 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
++         _4 = const 3_usize;
           StorageLive(_5);
+-         _5 = OffsetOf(Epsilon, [(0, 0)]);
++         _5 = const 1_usize;
           StorageLive(_6);
--         _6 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind continue];
+-         _6 = OffsetOf(Epsilon, [(0, 1)]);
 +         _6 = const 2_usize;
-+         _5 = must_use::<usize>(const 2_usize) -> [return: bb3, unwind continue];
-      }
-  
-      bb3: {
-          StorageDead(_6);
           StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind continue];
-+         _8 = const 3_usize;
-+         _7 = must_use::<usize>(const 3_usize) -> [return: bb4, unwind continue];
-      }
-  
-      bb4: {
-          StorageDead(_8);
-          StorageLive(_9);
-          StorageLive(_10);
--         _10 = OffsetOf(Epsilon, [(0, 0)]);
--         _9 = must_use::<usize>(move _10) -> [return: bb5, unwind continue];
-+         _10 = const 1_usize;
-+         _9 = must_use::<usize>(const 1_usize) -> [return: bb5, unwind continue];
-      }
-  
-      bb5: {
-          StorageDead(_10);
-          StorageLive(_11);
-          StorageLive(_12);
--         _12 = OffsetOf(Epsilon, [(0, 1)]);
--         _11 = must_use::<usize>(move _12) -> [return: bb6, unwind continue];
-+         _12 = const 2_usize;
-+         _11 = must_use::<usize>(const 2_usize) -> [return: bb6, unwind continue];
-      }
-  
-      bb6: {
-          StorageDead(_12);
-          StorageLive(_13);
-          StorageLive(_14);
--         _14 = OffsetOf(Epsilon, [(2, 0)]);
--         _13 = must_use::<usize>(move _14) -> [return: bb7, unwind continue];
-+         _14 = const 4_usize;
-+         _13 = must_use::<usize>(const 4_usize) -> [return: bb7, unwind continue];
-      }
-  
-      bb7: {
-          StorageDead(_14);
+-         _7 = OffsetOf(Epsilon, [(2, 0)]);
++         _7 = const 4_usize;
           _0 = const ();
-          StorageDead(_13);
-          StorageDead(_11);
-          StorageDead(_9);
           StorageDead(_7);
+          StorageDead(_6);
           StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-abort.diff b/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-abort.diff
index 025241dd1bf..130c31eff8c 100644
--- a/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-abort.diff
@@ -4,33 +4,26 @@
   fn generic() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
-      let mut _10: usize;
-      let mut _12: usize;
-      let mut _14: usize;
       scope 1 {
           debug gx => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug gy => _3;
-              let _5: usize;
+              debug gy => _2;
+              let _3: usize;
               scope 3 {
-                  debug dx => _5;
-                  let _7: usize;
+                  debug dx => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug dy => _7;
-                      let _9: usize;
+                      debug dy => _4;
+                      let _5: usize;
                       scope 5 {
-                          debug zA0 => _9;
-                          let _11: usize;
+                          debug zA0 => _5;
+                          let _6: usize;
                           scope 6 {
-                              debug zA1 => _11;
-                              let _13: usize;
+                              debug zA1 => _6;
+                              let _7: usize;
                               scope 7 {
-                                  debug zB => _13;
+                                  debug zB => _7;
                               }
                           }
                       }
@@ -41,72 +34,28 @@
   
       bb0: {
           StorageLive(_1);
+          _1 = OffsetOf(Gamma<T>, [(0, 0)]);
           StorageLive(_2);
-          _2 = OffsetOf(Gamma<T>, [(0, 0)]);
-          _1 = must_use::<usize>(move _2) -> [return: bb1, unwind unreachable];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+          _2 = OffsetOf(Gamma<T>, [(0, 1)]);
           StorageLive(_3);
+-         _3 = OffsetOf(Delta<T>, [(0, 1)]);
++         _3 = const 0_usize;
           StorageLive(_4);
-          _4 = OffsetOf(Gamma<T>, [(0, 1)]);
-          _3 = must_use::<usize>(move _4) -> [return: bb2, unwind unreachable];
-      }
-  
-      bb2: {
-          StorageDead(_4);
+-         _4 = OffsetOf(Delta<T>, [(0, 2)]);
++         _4 = const 2_usize;
           StorageLive(_5);
+          _5 = OffsetOf(Zeta<T>, [(0, 0)]);
           StorageLive(_6);
--         _6 = OffsetOf(Delta<T>, [(0, 1)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind unreachable];
-+         _6 = const 0_usize;
-+         _5 = must_use::<usize>(const 0_usize) -> [return: bb3, unwind unreachable];
-      }
-  
-      bb3: {
-          StorageDead(_6);
+          _6 = OffsetOf(Zeta<T>, [(0, 1)]);
           StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Delta<T>, [(0, 2)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind unreachable];
-+         _8 = const 2_usize;
-+         _7 = must_use::<usize>(const 2_usize) -> [return: bb4, unwind unreachable];
-      }
-  
-      bb4: {
-          StorageDead(_8);
-          StorageLive(_9);
-          StorageLive(_10);
-          _10 = OffsetOf(Zeta<T>, [(0, 0)]);
-          _9 = must_use::<usize>(move _10) -> [return: bb5, unwind unreachable];
-      }
-  
-      bb5: {
-          StorageDead(_10);
-          StorageLive(_11);
-          StorageLive(_12);
-          _12 = OffsetOf(Zeta<T>, [(0, 1)]);
-          _11 = must_use::<usize>(move _12) -> [return: bb6, unwind unreachable];
-      }
-  
-      bb6: {
-          StorageDead(_12);
-          StorageLive(_13);
-          StorageLive(_14);
-          _14 = OffsetOf(Zeta<T>, [(1, 0)]);
-          _13 = must_use::<usize>(move _14) -> [return: bb7, unwind unreachable];
-      }
-  
-      bb7: {
-          StorageDead(_14);
+          _7 = OffsetOf(Zeta<T>, [(1, 0)]);
           _0 = const ();
-          StorageDead(_13);
-          StorageDead(_11);
-          StorageDead(_9);
           StorageDead(_7);
+          StorageDead(_6);
           StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-unwind.diff
index 27f2b2f7355..130c31eff8c 100644
--- a/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/offset_of.generic.GVN.panic-unwind.diff
@@ -4,33 +4,26 @@
   fn generic() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
-      let mut _10: usize;
-      let mut _12: usize;
-      let mut _14: usize;
       scope 1 {
           debug gx => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug gy => _3;
-              let _5: usize;
+              debug gy => _2;
+              let _3: usize;
               scope 3 {
-                  debug dx => _5;
-                  let _7: usize;
+                  debug dx => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug dy => _7;
-                      let _9: usize;
+                      debug dy => _4;
+                      let _5: usize;
                       scope 5 {
-                          debug zA0 => _9;
-                          let _11: usize;
+                          debug zA0 => _5;
+                          let _6: usize;
                           scope 6 {
-                              debug zA1 => _11;
-                              let _13: usize;
+                              debug zA1 => _6;
+                              let _7: usize;
                               scope 7 {
-                                  debug zB => _13;
+                                  debug zB => _7;
                               }
                           }
                       }
@@ -41,72 +34,28 @@
   
       bb0: {
           StorageLive(_1);
+          _1 = OffsetOf(Gamma<T>, [(0, 0)]);
           StorageLive(_2);
-          _2 = OffsetOf(Gamma<T>, [(0, 0)]);
-          _1 = must_use::<usize>(move _2) -> [return: bb1, unwind continue];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+          _2 = OffsetOf(Gamma<T>, [(0, 1)]);
           StorageLive(_3);
+-         _3 = OffsetOf(Delta<T>, [(0, 1)]);
++         _3 = const 0_usize;
           StorageLive(_4);
-          _4 = OffsetOf(Gamma<T>, [(0, 1)]);
-          _3 = must_use::<usize>(move _4) -> [return: bb2, unwind continue];
-      }
-  
-      bb2: {
-          StorageDead(_4);
+-         _4 = OffsetOf(Delta<T>, [(0, 2)]);
++         _4 = const 2_usize;
           StorageLive(_5);
+          _5 = OffsetOf(Zeta<T>, [(0, 0)]);
           StorageLive(_6);
--         _6 = OffsetOf(Delta<T>, [(0, 1)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind continue];
-+         _6 = const 0_usize;
-+         _5 = must_use::<usize>(const 0_usize) -> [return: bb3, unwind continue];
-      }
-  
-      bb3: {
-          StorageDead(_6);
+          _6 = OffsetOf(Zeta<T>, [(0, 1)]);
           StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Delta<T>, [(0, 2)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind continue];
-+         _8 = const 2_usize;
-+         _7 = must_use::<usize>(const 2_usize) -> [return: bb4, unwind continue];
-      }
-  
-      bb4: {
-          StorageDead(_8);
-          StorageLive(_9);
-          StorageLive(_10);
-          _10 = OffsetOf(Zeta<T>, [(0, 0)]);
-          _9 = must_use::<usize>(move _10) -> [return: bb5, unwind continue];
-      }
-  
-      bb5: {
-          StorageDead(_10);
-          StorageLive(_11);
-          StorageLive(_12);
-          _12 = OffsetOf(Zeta<T>, [(0, 1)]);
-          _11 = must_use::<usize>(move _12) -> [return: bb6, unwind continue];
-      }
-  
-      bb6: {
-          StorageDead(_12);
-          StorageLive(_13);
-          StorageLive(_14);
-          _14 = OffsetOf(Zeta<T>, [(1, 0)]);
-          _13 = must_use::<usize>(move _14) -> [return: bb7, unwind continue];
-      }
-  
-      bb7: {
-          StorageDead(_14);
+          _7 = OffsetOf(Zeta<T>, [(1, 0)]);
           _0 = const ();
-          StorageDead(_13);
-          StorageDead(_11);
-          StorageDead(_9);
           StorageDead(_7);
+          StorageDead(_6);
           StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-abort.diff
index f8f89175033..92691d0f807 100644
--- a/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-abort.diff
@@ -4,21 +4,17 @@
   fn concrete() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
       scope 1 {
           debug x => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug y => _3;
-              let _5: usize;
+              debug y => _2;
+              let _3: usize;
               scope 3 {
-                  debug z0 => _5;
-                  let _7: usize;
+                  debug z0 => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug z1 => _7;
+                      debug z1 => _4;
                   }
               }
           }
@@ -26,49 +22,21 @@
   
       bb0: {
           StorageLive(_1);
+-         _1 = OffsetOf(Alpha, [(0, 0)]);
++         _1 = const 4_usize;
           StorageLive(_2);
--         _2 = OffsetOf(Alpha, [(0, 0)]);
--         _1 = must_use::<usize>(move _2) -> [return: bb1, unwind unreachable];
-+         _2 = const 4_usize;
-+         _1 = must_use::<usize>(const 4_usize) -> [return: bb1, unwind unreachable];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+-         _2 = OffsetOf(Alpha, [(0, 1)]);
++         _2 = const 0_usize;
           StorageLive(_3);
+-         _3 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
++         _3 = const 2_usize;
           StorageLive(_4);
--         _4 = OffsetOf(Alpha, [(0, 1)]);
--         _3 = must_use::<usize>(move _4) -> [return: bb2, unwind unreachable];
-+         _4 = const 0_usize;
-+         _3 = must_use::<usize>(const 0_usize) -> [return: bb2, unwind unreachable];
-      }
-  
-      bb2: {
-          StorageDead(_4);
-          StorageLive(_5);
-          StorageLive(_6);
--         _6 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind unreachable];
-+         _6 = const 2_usize;
-+         _5 = must_use::<usize>(const 2_usize) -> [return: bb3, unwind unreachable];
-      }
-  
-      bb3: {
-          StorageDead(_6);
-          StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind unreachable];
-+         _8 = const 3_usize;
-+         _7 = must_use::<usize>(const 3_usize) -> [return: bb4, unwind unreachable];
-      }
-  
-      bb4: {
-          StorageDead(_8);
+-         _4 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
++         _4 = const 3_usize;
           _0 = const ();
-          StorageDead(_7);
-          StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-unwind.diff
index d4f8cb66704..92691d0f807 100644
--- a/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/offset_of.concrete.DataflowConstProp.panic-unwind.diff
@@ -4,21 +4,17 @@
   fn concrete() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
       scope 1 {
           debug x => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug y => _3;
-              let _5: usize;
+              debug y => _2;
+              let _3: usize;
               scope 3 {
-                  debug z0 => _5;
-                  let _7: usize;
+                  debug z0 => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug z1 => _7;
+                      debug z1 => _4;
                   }
               }
           }
@@ -26,49 +22,21 @@
   
       bb0: {
           StorageLive(_1);
+-         _1 = OffsetOf(Alpha, [(0, 0)]);
++         _1 = const 4_usize;
           StorageLive(_2);
--         _2 = OffsetOf(Alpha, [(0, 0)]);
--         _1 = must_use::<usize>(move _2) -> [return: bb1, unwind continue];
-+         _2 = const 4_usize;
-+         _1 = must_use::<usize>(const 4_usize) -> [return: bb1, unwind continue];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+-         _2 = OffsetOf(Alpha, [(0, 1)]);
++         _2 = const 0_usize;
           StorageLive(_3);
+-         _3 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
++         _3 = const 2_usize;
           StorageLive(_4);
--         _4 = OffsetOf(Alpha, [(0, 1)]);
--         _3 = must_use::<usize>(move _4) -> [return: bb2, unwind continue];
-+         _4 = const 0_usize;
-+         _3 = must_use::<usize>(const 0_usize) -> [return: bb2, unwind continue];
-      }
-  
-      bb2: {
-          StorageDead(_4);
-          StorageLive(_5);
-          StorageLive(_6);
--         _6 = OffsetOf(Alpha, [(0, 2), (0, 0)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind continue];
-+         _6 = const 2_usize;
-+         _5 = must_use::<usize>(const 2_usize) -> [return: bb3, unwind continue];
-      }
-  
-      bb3: {
-          StorageDead(_6);
-          StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind continue];
-+         _8 = const 3_usize;
-+         _7 = must_use::<usize>(const 3_usize) -> [return: bb4, unwind continue];
-      }
-  
-      bb4: {
-          StorageDead(_8);
+-         _4 = OffsetOf(Alpha, [(0, 2), (0, 1)]);
++         _4 = const 3_usize;
           _0 = const ();
-          StorageDead(_7);
-          StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-abort.diff
index 7f166e4fa35..c6908166def 100644
--- a/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-abort.diff
@@ -4,21 +4,17 @@
   fn generic() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
       scope 1 {
           debug gx => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug gy => _3;
-              let _5: usize;
+              debug gy => _2;
+              let _3: usize;
               scope 3 {
-                  debug dx => _5;
-                  let _7: usize;
+                  debug dx => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug dy => _7;
+                      debug dy => _4;
                   }
               }
           }
@@ -26,45 +22,19 @@
   
       bb0: {
           StorageLive(_1);
+          _1 = OffsetOf(Gamma<T>, [(0, 0)]);
           StorageLive(_2);
-          _2 = OffsetOf(Gamma<T>, [(0, 0)]);
-          _1 = must_use::<usize>(move _2) -> [return: bb1, unwind unreachable];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+          _2 = OffsetOf(Gamma<T>, [(0, 1)]);
           StorageLive(_3);
+-         _3 = OffsetOf(Delta<T>, [(0, 1)]);
++         _3 = const 0_usize;
           StorageLive(_4);
-          _4 = OffsetOf(Gamma<T>, [(0, 1)]);
-          _3 = must_use::<usize>(move _4) -> [return: bb2, unwind unreachable];
-      }
-  
-      bb2: {
-          StorageDead(_4);
-          StorageLive(_5);
-          StorageLive(_6);
--         _6 = OffsetOf(Delta<T>, [(0, 1)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind unreachable];
-+         _6 = const 0_usize;
-+         _5 = must_use::<usize>(const 0_usize) -> [return: bb3, unwind unreachable];
-      }
-  
-      bb3: {
-          StorageDead(_6);
-          StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Delta<T>, [(0, 2)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind unreachable];
-+         _8 = const 2_usize;
-+         _7 = must_use::<usize>(const 2_usize) -> [return: bb4, unwind unreachable];
-      }
-  
-      bb4: {
-          StorageDead(_8);
+-         _4 = OffsetOf(Delta<T>, [(0, 2)]);
++         _4 = const 2_usize;
           _0 = const ();
-          StorageDead(_7);
-          StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-unwind.diff
index 38ad6f79801..c6908166def 100644
--- a/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/offset_of.generic.DataflowConstProp.panic-unwind.diff
@@ -4,21 +4,17 @@
   fn generic() -> () {
       let mut _0: ();
       let _1: usize;
-      let mut _2: usize;
-      let mut _4: usize;
-      let mut _6: usize;
-      let mut _8: usize;
       scope 1 {
           debug gx => _1;
-          let _3: usize;
+          let _2: usize;
           scope 2 {
-              debug gy => _3;
-              let _5: usize;
+              debug gy => _2;
+              let _3: usize;
               scope 3 {
-                  debug dx => _5;
-                  let _7: usize;
+                  debug dx => _3;
+                  let _4: usize;
                   scope 4 {
-                      debug dy => _7;
+                      debug dy => _4;
                   }
               }
           }
@@ -26,45 +22,19 @@
   
       bb0: {
           StorageLive(_1);
+          _1 = OffsetOf(Gamma<T>, [(0, 0)]);
           StorageLive(_2);
-          _2 = OffsetOf(Gamma<T>, [(0, 0)]);
-          _1 = must_use::<usize>(move _2) -> [return: bb1, unwind continue];
-      }
-  
-      bb1: {
-          StorageDead(_2);
+          _2 = OffsetOf(Gamma<T>, [(0, 1)]);
           StorageLive(_3);
+-         _3 = OffsetOf(Delta<T>, [(0, 1)]);
++         _3 = const 0_usize;
           StorageLive(_4);
-          _4 = OffsetOf(Gamma<T>, [(0, 1)]);
-          _3 = must_use::<usize>(move _4) -> [return: bb2, unwind continue];
-      }
-  
-      bb2: {
-          StorageDead(_4);
-          StorageLive(_5);
-          StorageLive(_6);
--         _6 = OffsetOf(Delta<T>, [(0, 1)]);
--         _5 = must_use::<usize>(move _6) -> [return: bb3, unwind continue];
-+         _6 = const 0_usize;
-+         _5 = must_use::<usize>(const 0_usize) -> [return: bb3, unwind continue];
-      }
-  
-      bb3: {
-          StorageDead(_6);
-          StorageLive(_7);
-          StorageLive(_8);
--         _8 = OffsetOf(Delta<T>, [(0, 2)]);
--         _7 = must_use::<usize>(move _8) -> [return: bb4, unwind continue];
-+         _8 = const 2_usize;
-+         _7 = must_use::<usize>(const 2_usize) -> [return: bb4, unwind continue];
-      }
-  
-      bb4: {
-          StorageDead(_8);
+-         _4 = OffsetOf(Delta<T>, [(0, 2)]);
++         _4 = const 2_usize;
           _0 = const ();
-          StorageDead(_7);
-          StorageDead(_5);
+          StorageDead(_4);
           StorageDead(_3);
+          StorageDead(_2);
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/offset_of.rs b/tests/mir-opt/dataflow-const-prop/offset_of.rs
index cd4e1f6990d..12396b31ed0 100644
--- a/tests/mir-opt/dataflow-const-prop/offset_of.rs
+++ b/tests/mir-opt/dataflow-const-prop/offset_of.rs
@@ -36,16 +36,16 @@ fn concrete() {
     // CHECK: debug z0 => [[z0:_.*]];
     // CHECK: debug z1 => [[z1:_.*]];
 
-    // CHECK: [[x]] = must_use::<usize>(const 4_usize) -> {{.*}}
+    // CHECK: [[x]] = const 4_usize
     let x = offset_of!(Alpha, x);
 
-    // CHECK: [[y]] = must_use::<usize>(const 0_usize) -> {{.*}}
+    // CHECK: [[y]] = const 0_usize
     let y = offset_of!(Alpha, y);
 
-    // CHECK: [[z0]] = must_use::<usize>(const 2_usize) -> {{.*}}
+    // CHECK: [[z0]] = const 2_usize
     let z0 = offset_of!(Alpha, z.0);
 
-    // CHECK: [[z1]] = must_use::<usize>(const 3_usize) -> {{.*}}
+    // CHECK: [[z1]] = const 3_usize
     let z1 = offset_of!(Alpha, z.1);
 }
 
@@ -58,16 +58,16 @@ fn generic<T>() {
     // CHECK: debug dx => [[dx:_.*]];
     // CHECK: debug dy => [[dy:_.*]];
 
-    // CHECK: [[gx]] = must_use::<usize>(move {{_.*}}) -> {{.*}}
+    // CHECK: [[gx]] = OffsetOf(Gamma<T>, [(0, 0)]);
     let gx = offset_of!(Gamma<T>, x);
 
-    // CHECK: [[gy]] = must_use::<usize>(move {{_.*}}) -> {{.*}}
+    // CHECK: [[gy]] = OffsetOf(Gamma<T>, [(0, 1)]);
     let gy = offset_of!(Gamma<T>, y);
 
-    // CHECK: [[dx]] = must_use::<usize>(const 0_usize) -> {{.*}}
+    // CHECK: [[dx]] = const 0_usize
     let dx = offset_of!(Delta<T>, x);
 
-    // CHECK: [[dy]] = must_use::<usize>(const 2_usize) -> {{.*}}
+    // CHECK: [[dy]] = const 2_usize
     let dy = offset_of!(Delta<T>, y);
 }
 
diff --git a/tests/ui/offset-of/offset-of-self.rs b/tests/ui/offset-of/offset-of-self.rs
index 51b1a0b2427..1558e13b530 100644
--- a/tests/ui/offset-of/offset-of-self.rs
+++ b/tests/ui/offset-of/offset-of-self.rs
@@ -23,9 +23,8 @@ impl S {
     fn offs_in_c() -> usize {
         offset_of!(C<Self>, w)
     }
-    // Put offset_of in a slice - test #124478.
-    fn offs_in_c_colon() -> &'static [usize] {
-        &[offset_of!(C::<Self>, w)]
+    fn offs_in_c_colon() -> usize {
+        offset_of!(C::<Self>, w)
     }
 }
 
diff --git a/tests/ui/offset-of/offset-of-self.stderr b/tests/ui/offset-of/offset-of-self.stderr
index a2104a438ad..7c7576e066b 100644
--- a/tests/ui/offset-of/offset-of-self.stderr
+++ b/tests/ui/offset-of/offset-of-self.stderr
@@ -5,7 +5,7 @@ LL |         offset_of!(Self, Self::v);
    |                          ^^^^^^^
 
 error[E0412]: cannot find type `S` in module `self`
-  --> $DIR/offset-of-self.rs:35:26
+  --> $DIR/offset-of-self.rs:34:26
    |
 LL |         offset_of!(self::S, v);
    |                          ^ not found in `self`
@@ -21,7 +21,7 @@ LL +         offset_of!(S, v);
    |
 
 error[E0411]: cannot find type `Self` in this scope
-  --> $DIR/offset-of-self.rs:52:16
+  --> $DIR/offset-of-self.rs:51:16
    |
 LL | fn main() {
    |    ---- `Self` not allowed in a function
@@ -38,13 +38,13 @@ LL |         offset_of!(S, Self);
    = note: available fields are: `v`, `w`
 
 error[E0616]: field `v` of struct `T` is private
-  --> $DIR/offset-of-self.rs:41:30
+  --> $DIR/offset-of-self.rs:40:30
    |
 LL |             offset_of!(Self, v)
    |                              ^ private field
 
 error[E0609]: no field `self` on type `S`
-  --> $DIR/offset-of-self.rs:54:19
+  --> $DIR/offset-of-self.rs:53:19
    |
 LL |     offset_of!(S, self);
    |                   ^^^^
@@ -52,7 +52,7 @@ LL |     offset_of!(S, self);
    = note: available fields are: `v`, `w`
 
 error[E0609]: no field `self` on type `u8`
-  --> $DIR/offset-of-self.rs:55:21
+  --> $DIR/offset-of-self.rs:54:21
    |
 LL |     offset_of!(S, v.self);
    |                     ^^^^
diff --git a/tests/ui/offset-of/offset-of-temporaries.rs b/tests/ui/offset-of/offset-of-temporaries.rs
new file mode 100644
index 00000000000..951a8ee2b50
--- /dev/null
+++ b/tests/ui/offset-of/offset-of-temporaries.rs
@@ -0,0 +1,23 @@
+//@ build-pass
+
+//! Regression test #124478.
+
+use std::mem::offset_of;
+
+struct S {
+    v: u8,
+    w: u16,
+}
+
+impl S {
+    fn return_static_slice() -> &'static [usize] {
+        &[offset_of!(Self, v), offset_of!(Self, w)]
+    }
+    fn use_reference() -> usize {
+        let r = &offset_of!(Self, v);
+        *r * 6
+    }
+}
+
+fn main() {
+}