diff --git a/src/librustc_mir/transform/deaggregator.rs b/src/librustc_mir/transform/deaggregator.rs index 44c35960abaf8..8ffcc4025f113 100644 --- a/src/librustc_mir/transform/deaggregator.rs +++ b/src/librustc_mir/transform/deaggregator.rs @@ -41,7 +41,11 @@ impl MirPass for Deaggregator { let can_deaggregate = |statement: &Statement| { if let StatementKind::Assign(_, ref rhs) = statement.kind { - if let Rvalue::Aggregate(..) = *rhs { + if let Rvalue::Aggregate(ref kind, _) = *rhs { + // FIXME(#48193) Deaggregate arrays when it's cheaper to do so. + if let AggregateKind::Array(_) = **kind { + return false; + } return true; } } diff --git a/src/test/mir-opt/deaggregator_test_multiple.rs b/src/test/mir-opt/deaggregator_test_multiple.rs index 5127ed5885371..3a9a458fd464d 100644 --- a/src/test/mir-opt/deaggregator_test_multiple.rs +++ b/src/test/mir-opt/deaggregator_test_multiple.rs @@ -52,8 +52,7 @@ fn main() { // ((_4 as A).0: i32) = move _5; // discriminant(_4) = 0; // ... -// _0[0 of 1] = move _2; -// _0[1 of 2] = move _4; +// _0 = [move _2, move _4]; // ... // return; // }