about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/mir-opt/inline/cycle.f.Inline.diff42
-rw-r--r--src/test/mir-opt/inline/cycle.g.Inline.diff25
-rw-r--r--src/test/mir-opt/inline/cycle.main.Inline.diff25
-rw-r--r--src/test/mir-opt/inline/cycle.rs (renamed from src/test/ui/inline_cycle.rs)7
4 files changed, 95 insertions, 4 deletions
diff --git a/src/test/mir-opt/inline/cycle.f.Inline.diff b/src/test/mir-opt/inline/cycle.f.Inline.diff
new file mode 100644
index 00000000000..4f7924170b4
--- /dev/null
+++ b/src/test/mir-opt/inline/cycle.f.Inline.diff
@@ -0,0 +1,42 @@
+- // MIR for `f` before Inline
++ // MIR for `f` after Inline
+  
+  fn f(_1: impl Fn()) -> () {
+      debug g => _1;                       // in scope 0 at $DIR/cycle.rs:3:6: 3:7
+      let mut _0: ();                      // return place in scope 0 at $DIR/cycle.rs:3:20: 3:20
+      let _2: ();                          // in scope 0 at $DIR/cycle.rs:4:5: 4:8
+      let mut _3: &impl Fn();              // in scope 0 at $DIR/cycle.rs:4:5: 4:6
+      let mut _4: ();                      // in scope 0 at $DIR/cycle.rs:4:5: 4:8
+  
+      bb0: {
+          StorageLive(_2);                 // scope 0 at $DIR/cycle.rs:4:5: 4:8
+          StorageLive(_3);                 // scope 0 at $DIR/cycle.rs:4:5: 4:6
+          _3 = &_1;                        // scope 0 at $DIR/cycle.rs:4:5: 4:6
+          StorageLive(_4);                 // scope 0 at $DIR/cycle.rs:4:5: 4:8
+          _2 = <impl Fn() as Fn<()>>::call(move _3, move _4) -> [return: bb1, unwind: bb3]; // scope 0 at $DIR/cycle.rs:4:5: 4:8
+                                           // mir::Constant
+                                           // + span: $DIR/cycle.rs:4:5: 4:6
+                                           // + literal: Const { ty: for<'r> extern "rust-call" fn(&'r impl Fn(), ()) -> <impl Fn() as std::ops::FnOnce<()>>::Output {<impl Fn() as std::ops::Fn<()>>::call}, val: Value(Scalar(<ZST>)) }
+      }
+  
+      bb1: {
+          StorageDead(_4);                 // scope 0 at $DIR/cycle.rs:4:7: 4:8
+          StorageDead(_3);                 // scope 0 at $DIR/cycle.rs:4:7: 4:8
+          StorageDead(_2);                 // scope 0 at $DIR/cycle.rs:4:8: 4:9
+          _0 = const ();                   // scope 0 at $DIR/cycle.rs:3:20: 5:2
+          drop(_1) -> [return: bb2, unwind: bb4]; // scope 0 at $DIR/cycle.rs:5:1: 5:2
+      }
+  
+      bb2: {
+          return;                          // scope 0 at $DIR/cycle.rs:5:2: 5:2
+      }
+  
+      bb3 (cleanup): {
+          drop(_1) -> bb4;                 // scope 0 at $DIR/cycle.rs:5:1: 5:2
+      }
+  
+      bb4 (cleanup): {
+          resume;                          // scope 0 at $DIR/cycle.rs:3:1: 5:2
+      }
+  }
+  
diff --git a/src/test/mir-opt/inline/cycle.g.Inline.diff b/src/test/mir-opt/inline/cycle.g.Inline.diff
new file mode 100644
index 00000000000..4fbdce3eb0a
--- /dev/null
+++ b/src/test/mir-opt/inline/cycle.g.Inline.diff
@@ -0,0 +1,25 @@
+- // MIR for `g` before Inline
++ // MIR for `g` after Inline
+  
+  fn g() -> () {
+      let mut _0: ();                      // return place in scope 0 at $DIR/cycle.rs:9:8: 9:8
+      let _1: ();                          // in scope 0 at $DIR/cycle.rs:10:5: 10:12
+  
+      bb0: {
+          StorageLive(_1);                 // scope 0 at $DIR/cycle.rs:10:5: 10:12
+          _1 = f::<fn() {main}>(main) -> bb1; // scope 0 at $DIR/cycle.rs:10:5: 10:12
+                                           // mir::Constant
+                                           // + span: $DIR/cycle.rs:10:5: 10:6
+                                           // + literal: Const { ty: fn(fn() {main}) {f::<fn() {main}>}, val: Value(Scalar(<ZST>)) }
+                                           // mir::Constant
+                                           // + span: $DIR/cycle.rs:10:7: 10:11
+                                           // + literal: Const { ty: fn() {main}, val: Value(Scalar(<ZST>)) }
+      }
+  
+      bb1: {
+          StorageDead(_1);                 // scope 0 at $DIR/cycle.rs:10:12: 10:13
+          _0 = const ();                   // scope 0 at $DIR/cycle.rs:9:8: 11:2
+          return;                          // scope 0 at $DIR/cycle.rs:11:2: 11:2
+      }
+  }
+  
diff --git a/src/test/mir-opt/inline/cycle.main.Inline.diff b/src/test/mir-opt/inline/cycle.main.Inline.diff
new file mode 100644
index 00000000000..3c7dfc2494e
--- /dev/null
+++ b/src/test/mir-opt/inline/cycle.main.Inline.diff
@@ -0,0 +1,25 @@
+- // MIR for `main` before Inline
++ // MIR for `main` after Inline
+  
+  fn main() -> () {
+      let mut _0: ();                      // return place in scope 0 at $DIR/cycle.rs:14:11: 14:11
+      let _1: ();                          // in scope 0 at $DIR/cycle.rs:15:5: 15:9
+  
+      bb0: {
+          StorageLive(_1);                 // scope 0 at $DIR/cycle.rs:15:5: 15:9
+          _1 = f::<fn() {g}>(g) -> bb1;    // scope 0 at $DIR/cycle.rs:15:5: 15:9
+                                           // mir::Constant
+                                           // + span: $DIR/cycle.rs:15:5: 15:6
+                                           // + literal: Const { ty: fn(fn() {g}) {f::<fn() {g}>}, val: Value(Scalar(<ZST>)) }
+                                           // mir::Constant
+                                           // + span: $DIR/cycle.rs:15:7: 15:8
+                                           // + literal: Const { ty: fn() {g}, val: Value(Scalar(<ZST>)) }
+      }
+  
+      bb1: {
+          StorageDead(_1);                 // scope 0 at $DIR/cycle.rs:15:9: 15:10
+          _0 = const ();                   // scope 0 at $DIR/cycle.rs:14:11: 16:2
+          return;                          // scope 0 at $DIR/cycle.rs:16:2: 16:2
+      }
+  }
+  
diff --git a/src/test/ui/inline_cycle.rs b/src/test/mir-opt/inline/cycle.rs
index 60767f10660..0be6fec99dd 100644
--- a/src/test/ui/inline_cycle.rs
+++ b/src/test/mir-opt/inline/cycle.rs
@@ -1,17 +1,16 @@
-// Needs build-pass to trigger `optimized_mir` on all mir bodies
-// build-pass
-// compile-flags: -Zmir-opt-level=2
-
+// EMIT_MIR cycle.f.Inline.diff
 #[inline(always)]
 fn f(g: impl Fn()) {
     g();
 }
 
+// EMIT_MIR cycle.g.Inline.diff
 #[inline(always)]
 fn g() {
     f(main);
 }
 
+// EMIT_MIR cycle.main.Inline.diff
 fn main() {
     f(g);
 }