diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2023-01-25 18:34:19 +0000 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2023-02-02 23:20:29 +0000 |
| commit | 134d8190727c6dca40011f03686e7bb68f46a26b (patch) | |
| tree | 40015ba04bb43212f86df58e9a03276a893bfd58 /compiler/rustc_mir_transform/src/deaggregator.rs | |
| parent | 6a0b218161ddeeeb4adac8caa8c0e6bae32a4bed (diff) | |
| download | rust-134d8190727c6dca40011f03686e7bb68f46a26b.tar.gz rust-134d8190727c6dca40011f03686e7bb68f46a26b.zip | |
Stop deaggegating MIR.
Diffstat (limited to 'compiler/rustc_mir_transform/src/deaggregator.rs')
| -rw-r--r-- | compiler/rustc_mir_transform/src/deaggregator.rs | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/compiler/rustc_mir_transform/src/deaggregator.rs b/compiler/rustc_mir_transform/src/deaggregator.rs deleted file mode 100644 index 905e127b7cb..00000000000 --- a/compiler/rustc_mir_transform/src/deaggregator.rs +++ /dev/null @@ -1,49 +0,0 @@ -use crate::util::expand_aggregate; -use crate::MirPass; -use rustc_hir::def::DefKind; -use rustc_middle::mir::*; -use rustc_middle::ty::TyCtxt; - -pub struct Deaggregator; - -impl<'tcx> MirPass<'tcx> for Deaggregator { - fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - let basic_blocks = body.basic_blocks.as_mut_preserves_cfg(); - for bb in basic_blocks { - bb.expand_statements(|stmt| { - // FIXME(eddyb) don't match twice on `stmt.kind` (post-NLL). - let StatementKind::Assign(box ( - _, Rvalue::Aggregate(box ref kind, _)) - ) = stmt.kind else { return None }; - - // FIXME(#48193) Deaggregate arrays when it's cheaper to do so. - if let AggregateKind::Array(_) = kind { - return None; - } - - if let AggregateKind::Adt(def_id, ..) = kind - && matches!(tcx.def_kind(def_id), DefKind::Enum) - { - return None; - } - - let stmt = stmt.replace_nop(); - let source_info = stmt.source_info; - let StatementKind::Assign(box (lhs, Rvalue::Aggregate(kind, operands))) = stmt.kind else { - bug!(); - }; - - Some(expand_aggregate( - lhs, - operands.into_iter().map(|op| { - let ty = op.ty(&body.local_decls, tcx); - (op, ty) - }), - *kind, - source_info, - tcx, - )) - }); - } - } -} |
