From ddc328c2f1ba2fb90206f9eecf39fa8b78bc140f Mon Sep 17 00:00:00 2001 From: Camille GILLOT Date: Mon, 16 Oct 2023 19:26:04 +0000 Subject: FileCheck combine_clone_of_primitives. --- tests/mir-opt/combine_clone_of_primitives.rs | 21 ------- ...es.{impl#0}-clone.InstSimplify.panic-abort.diff | 65 ------------------- ...s.{impl#0}-clone.InstSimplify.panic-unwind.diff | 73 ---------------------- .../instsimplify/combine_clone_of_primitives.rs | 24 +++++++ ...es.{impl#0}-clone.InstSimplify.panic-abort.diff | 65 +++++++++++++++++++ ...s.{impl#0}-clone.InstSimplify.panic-unwind.diff | 73 ++++++++++++++++++++++ 6 files changed, 162 insertions(+), 159 deletions(-) delete mode 100644 tests/mir-opt/combine_clone_of_primitives.rs delete mode 100644 tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff delete mode 100644 tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff create mode 100644 tests/mir-opt/instsimplify/combine_clone_of_primitives.rs create mode 100644 tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff create mode 100644 tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff diff --git a/tests/mir-opt/combine_clone_of_primitives.rs b/tests/mir-opt/combine_clone_of_primitives.rs deleted file mode 100644 index 1a8913eb8b1..00000000000 --- a/tests/mir-opt/combine_clone_of_primitives.rs +++ /dev/null @@ -1,21 +0,0 @@ -// skip-filecheck -// unit-test: InstSimplify -// EMIT_MIR_FOR_EACH_PANIC_STRATEGY - -// EMIT_MIR combine_clone_of_primitives.{impl#0}-clone.InstSimplify.diff - -#[derive(Clone)] -struct MyThing { - v: T, - i: u64, - a: [f32; 3], -} - -fn main() { - let x = MyThing:: { v: 2, i: 3, a: [0.0; 3] }; - let y = x.clone(); - - assert_eq!(y.v, 2); - assert_eq!(y.i, 3); - assert_eq!(y.a, [0.0; 3]); -} diff --git a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff b/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff deleted file mode 100644 index 1a1ff577940..00000000000 --- a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff +++ /dev/null @@ -1,65 +0,0 @@ -- // MIR for `::clone` before InstSimplify -+ // MIR for `::clone` after InstSimplify - - fn ::clone(_1: &MyThing) -> MyThing { - debug self => _1; - let mut _0: MyThing; - let mut _2: T; - let mut _3: &T; - let _4: &T; - let mut _5: u64; - let mut _6: &u64; - let _7: &u64; - let mut _8: [f32; 3]; - let mut _9: &[f32; 3]; - let _10: &[f32; 3]; - - bb0: { - StorageLive(_2); - StorageLive(_3); - StorageLive(_4); - _4 = &((*_1).0: T); -- _3 = &(*_4); -+ _3 = _4; - _2 = ::clone(move _3) -> [return: bb1, unwind unreachable]; - } - - bb1: { - StorageDead(_3); - StorageLive(_5); - StorageLive(_6); - StorageLive(_7); - _7 = &((*_1).1: u64); -- _6 = &(*_7); -- _5 = ::clone(move _6) -> [return: bb2, unwind unreachable]; -+ _6 = _7; -+ _5 = (*_6); -+ goto -> bb2; - } - - bb2: { - StorageDead(_6); - StorageLive(_8); - StorageLive(_9); - StorageLive(_10); - _10 = &((*_1).2: [f32; 3]); -- _9 = &(*_10); -- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind unreachable]; -+ _9 = _10; -+ _8 = (*_9); -+ goto -> bb3; - } - - bb3: { - StorageDead(_9); - _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; - StorageDead(_8); - StorageDead(_5); - StorageDead(_2); - StorageDead(_10); - StorageDead(_7); - StorageDead(_4); - return; - } - } - diff --git a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff b/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff deleted file mode 100644 index 4d851b53286..00000000000 --- a/tests/mir-opt/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff +++ /dev/null @@ -1,73 +0,0 @@ -- // MIR for `::clone` before InstSimplify -+ // MIR for `::clone` after InstSimplify - - fn ::clone(_1: &MyThing) -> MyThing { - debug self => _1; - let mut _0: MyThing; - let mut _2: T; - let mut _3: &T; - let _4: &T; - let mut _5: u64; - let mut _6: &u64; - let _7: &u64; - let mut _8: [f32; 3]; - let mut _9: &[f32; 3]; - let _10: &[f32; 3]; - - bb0: { - StorageLive(_2); - StorageLive(_3); - StorageLive(_4); - _4 = &((*_1).0: T); -- _3 = &(*_4); -+ _3 = _4; - _2 = ::clone(move _3) -> [return: bb1, unwind continue]; - } - - bb1: { - StorageDead(_3); - StorageLive(_5); - StorageLive(_6); - StorageLive(_7); - _7 = &((*_1).1: u64); -- _6 = &(*_7); -- _5 = ::clone(move _6) -> [return: bb2, unwind: bb4]; -+ _6 = _7; -+ _5 = (*_6); -+ goto -> bb2; - } - - bb2: { - StorageDead(_6); - StorageLive(_8); - StorageLive(_9); - StorageLive(_10); - _10 = &((*_1).2: [f32; 3]); -- _9 = &(*_10); -- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind: bb4]; -+ _9 = _10; -+ _8 = (*_9); -+ goto -> bb3; - } - - bb3: { - StorageDead(_9); - _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; - StorageDead(_8); - StorageDead(_5); - StorageDead(_2); - StorageDead(_10); - StorageDead(_7); - StorageDead(_4); - return; - } - - bb4 (cleanup): { - drop(_2) -> [return: bb5, unwind terminate(cleanup)]; - } - - bb5 (cleanup): { - resume; - } - } - diff --git a/tests/mir-opt/instsimplify/combine_clone_of_primitives.rs b/tests/mir-opt/instsimplify/combine_clone_of_primitives.rs new file mode 100644 index 00000000000..2adbe778d23 --- /dev/null +++ b/tests/mir-opt/instsimplify/combine_clone_of_primitives.rs @@ -0,0 +1,24 @@ +// unit-test: InstSimplify +// EMIT_MIR_FOR_EACH_PANIC_STRATEGY + +// EMIT_MIR combine_clone_of_primitives.{impl#0}-clone.InstSimplify.diff +#[derive(Clone)] +struct MyThing { + v: T, + i: u64, + a: [f32; 3], +} + +// CHECK-LABEL: ::clone( +// CHECK: ::clone( +// CHECK-NOT: ::clone( +// CHECK-NOT: <[f32; 3] as Clone>::clone( + +fn main() { + let x = MyThing:: { v: 2, i: 3, a: [0.0; 3] }; + let y = x.clone(); + + assert_eq!(y.v, 2); + assert_eq!(y.i, 3); + assert_eq!(y.a, [0.0; 3]); +} diff --git a/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff new file mode 100644 index 00000000000..48586f8b334 --- /dev/null +++ b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff @@ -0,0 +1,65 @@ +- // MIR for `::clone` before InstSimplify ++ // MIR for `::clone` after InstSimplify + + fn ::clone(_1: &MyThing) -> MyThing { + debug self => _1; + let mut _0: MyThing; + let mut _2: T; + let mut _3: &T; + let _4: &T; + let mut _5: u64; + let mut _6: &u64; + let _7: &u64; + let mut _8: [f32; 3]; + let mut _9: &[f32; 3]; + let _10: &[f32; 3]; + + bb0: { + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &((*_1).0: T); +- _3 = &(*_4); ++ _3 = _4; + _2 = ::clone(move _3) -> [return: bb1, unwind unreachable]; + } + + bb1: { + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &((*_1).1: u64); +- _6 = &(*_7); +- _5 = ::clone(move _6) -> [return: bb2, unwind unreachable]; ++ _6 = _7; ++ _5 = (*_6); ++ goto -> bb2; + } + + bb2: { + StorageDead(_6); + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + _10 = &((*_1).2: [f32; 3]); +- _9 = &(*_10); +- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind unreachable]; ++ _9 = _10; ++ _8 = (*_9); ++ goto -> bb3; + } + + bb3: { + StorageDead(_9); + _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; + StorageDead(_8); + StorageDead(_5); + StorageDead(_2); + StorageDead(_10); + StorageDead(_7); + StorageDead(_4); + return; + } + } + diff --git a/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff new file mode 100644 index 00000000000..a57266e9c12 --- /dev/null +++ b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff @@ -0,0 +1,73 @@ +- // MIR for `::clone` before InstSimplify ++ // MIR for `::clone` after InstSimplify + + fn ::clone(_1: &MyThing) -> MyThing { + debug self => _1; + let mut _0: MyThing; + let mut _2: T; + let mut _3: &T; + let _4: &T; + let mut _5: u64; + let mut _6: &u64; + let _7: &u64; + let mut _8: [f32; 3]; + let mut _9: &[f32; 3]; + let _10: &[f32; 3]; + + bb0: { + StorageLive(_2); + StorageLive(_3); + StorageLive(_4); + _4 = &((*_1).0: T); +- _3 = &(*_4); ++ _3 = _4; + _2 = ::clone(move _3) -> [return: bb1, unwind continue]; + } + + bb1: { + StorageDead(_3); + StorageLive(_5); + StorageLive(_6); + StorageLive(_7); + _7 = &((*_1).1: u64); +- _6 = &(*_7); +- _5 = ::clone(move _6) -> [return: bb2, unwind: bb4]; ++ _6 = _7; ++ _5 = (*_6); ++ goto -> bb2; + } + + bb2: { + StorageDead(_6); + StorageLive(_8); + StorageLive(_9); + StorageLive(_10); + _10 = &((*_1).2: [f32; 3]); +- _9 = &(*_10); +- _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind: bb4]; ++ _9 = _10; ++ _8 = (*_9); ++ goto -> bb3; + } + + bb3: { + StorageDead(_9); + _0 = MyThing:: { v: move _2, i: move _5, a: move _8 }; + StorageDead(_8); + StorageDead(_5); + StorageDead(_2); + StorageDead(_10); + StorageDead(_7); + StorageDead(_4); + return; + } + + bb4 (cleanup): { + drop(_2) -> [return: bb5, unwind terminate(cleanup)]; + } + + bb5 (cleanup): { + resume; + } + } + -- cgit 1.4.1-3-g733a5