summaryrefslogtreecommitdiffstats
path: root/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff')
-rw-r--r--tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff
new file mode 100644
index 000000000..4270ae00b
--- /dev/null
+++ b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff
@@ -0,0 +1,50 @@
+- // MIR for `drop` before Inline
++ // MIR for `drop` after Inline
+
+ fn drop(_1: *mut Vec<A>, _2: *mut Option<B>) -> () {
+ debug a => _1;
+ debug b => _2;
+ let mut _0: ();
+ let _3: ();
+ let mut _4: *mut std::vec::Vec<A>;
+ let mut _5: *mut std::option::Option<B>;
+ scope 1 {
+ }
+ scope 2 {
++ scope 3 (inlined std::ptr::drop_in_place::<Option<B>> - shim(Some(Option<B>))) {
++ let mut _6: isize;
++ let mut _7: isize;
++ }
+ }
+
+ bb0: {
+ StorageLive(_3);
+ StorageLive(_4);
+ _4 = _1;
+ _3 = std::ptr::drop_in_place::<Vec<A>>(move _4) -> [return: bb1, unwind continue];
+ }
+
+ bb1: {
+ StorageDead(_4);
+ StorageDead(_3);
+ StorageLive(_5);
+ _5 = _2;
+- _0 = std::ptr::drop_in_place::<Option<B>>(move _5) -> [return: bb2, unwind continue];
++ StorageLive(_6);
++ StorageLive(_7);
++ _6 = discriminant((*_5));
++ switchInt(move _6) -> [0: bb2, otherwise: bb3];
+ }
+
+ bb2: {
++ StorageDead(_7);
++ StorageDead(_6);
+ StorageDead(_5);
+ return;
++ }
++
++ bb3: {
++ drop((((*_5) as Some).0: B)) -> [return: bb2, unwind continue];
+ }
+ }
+