diff options
| author | Wesley Wiser <wwiser@gmail.com> | 2019-12-15 14:07:30 -0500 |
|---|---|---|
| committer | Wesley Wiser <wwiser@gmail.com> | 2019-12-20 20:39:47 -0500 |
| commit | bec4fc175aaab3a9b633b99642aa8e96375d3e89 (patch) | |
| tree | 448f3bfe3c2ad6eec1a0862b6b395aa7dc4a25a6 /src/test/mir-opt/inline | |
| parent | ccd238309f9dce92a05a23c2959e2819668c69a4 (diff) | |
[mir-opt] Fix `Inline` pass to handle inlining into `box` expressions
Diffstat (limited to 'src/test/mir-opt/inline')
| -rw-r--r-- | src/test/mir-opt/inline/inline-into-box-place.rs | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/test/mir-opt/inline/inline-into-box-place.rs b/src/test/mir-opt/inline/inline-into-box-place.rs new file mode 100644 index 00000000000..0bb9dfa403d --- /dev/null +++ b/src/test/mir-opt/inline/inline-into-box-place.rs @@ -0,0 +1,71 @@ +// ignore-tidy-linelength +// ignore-wasm32-bare compiled with panic=abort by default +#![feature(box_syntax)] + +fn main() { + let _x: Box<Vec<u32>> = box Vec::new(); +} + +// END RUST SOURCE +// START rustc.main.Inline.before.mir +// let mut _0: (); +// let _1: std::boxed::Box<std::vec::Vec<u32>> as UserTypeProjection { base: UserType(0), projs: [] }; +// let mut _2: std::boxed::Box<std::vec::Vec<u32>>; +// let mut _3: (); +// scope 1 { +// debug _x => _1; +// } +// bb0: { +// StorageLive(_1); +// StorageLive(_2); +// _2 = Box(std::vec::Vec<u32>); +// (*_2) = const std::vec::Vec::<u32>::new() -> [return: bb2, unwind: bb4]; +// } +// bb1 (cleanup): { +// resume; +// } +// bb2: { +// _1 = move _2; +// StorageDead(_2); +// _0 = (); +// drop(_1) -> [return: bb3, unwind: bb1]; +// } +// bb3: { +// StorageDead(_1); +// return; +// } +// bb4 (cleanup): { +// _3 = const alloc::alloc::box_free::<std::vec::Vec<u32>>(move (_2.0: std::ptr::Unique<std::vec::Vec<u32>>)) -> bb1; +// } +// END rustc.main.Inline.before.mir +// START rustc.main.Inline.after.mir +// let mut _0: (); +// let _1: std::boxed::Box<std::vec::Vec<u32>> as UserTypeProjection { base: UserType(0), projs: [] }; +// let mut _2: std::boxed::Box<std::vec::Vec<u32>>; +// let mut _3: (); +// let mut _4: &mut std::vec::Vec<u32>; +// scope 1 { +// debug _x => _1; +// } +// scope 2 { +// } +// bb0: { +// StorageLive(_1); +// StorageLive(_2); +// _2 = Box(std::vec::Vec<u32>); +// _4 = &mut (*_2); +// ((*_4).0: alloc::raw_vec::RawVec<u32>) = const alloc::raw_vec::RawVec::<u32>::NEW; +// ((*_4).1: usize) = const 0usize; +// _1 = move _2; +// StorageDead(_2); +// _0 = (); +// drop(_1) -> [return: bb2, unwind: bb1]; +// } +// bb1 (cleanup): { +// resume; +// } +// bb2: { +// StorageDead(_1); +// return; +// } +// END rustc.main.Inline.after.mir |
