|
1 | 1 | //! Performs various peephole optimizations.
|
2 | 2 |
|
| 3 | +use crate::simplify::combine_duplicate_switch_targets; |
3 | 4 | use crate::MirPass;
|
4 | 5 | use rustc_hir::Mutability;
|
5 |
| -use rustc_middle::mir::{ |
6 |
| - BinOp, Body, CastKind, Constant, ConstantKind, LocalDecls, Operand, Place, ProjectionElem, |
7 |
| - Rvalue, SourceInfo, Statement, StatementKind, SwitchTargets, Terminator, TerminatorKind, UnOp, |
8 |
| -}; |
| 6 | +use rustc_middle::mir::*; |
9 | 7 | use rustc_middle::ty::layout::ValidityRequirement;
|
10 | 8 | use rustc_middle::ty::util::IntTypeExt;
|
11 | 9 | use rustc_middle::ty::{self, ParamEnv, SubstsRef, Ty, TyCtxt};
|
@@ -46,7 +44,7 @@ impl<'tcx> MirPass<'tcx> for InstCombine {
|
46 | 44 | &mut block.terminator.as_mut().unwrap(),
|
47 | 45 | &mut block.statements,
|
48 | 46 | );
|
49 |
| - ctx.combine_duplicate_switch_targets(&mut block.terminator.as_mut().unwrap()); |
| 47 | + combine_duplicate_switch_targets(block.terminator.as_mut().unwrap()); |
50 | 48 | }
|
51 | 49 | }
|
52 | 50 | }
|
@@ -264,19 +262,6 @@ impl<'tcx> InstCombineContext<'tcx, '_> {
|
264 | 262 | terminator.kind = TerminatorKind::Goto { target: destination_block };
|
265 | 263 | }
|
266 | 264 |
|
267 |
| - fn combine_duplicate_switch_targets(&self, terminator: &mut Terminator<'tcx>) { |
268 |
| - let TerminatorKind::SwitchInt { targets, .. } = &mut terminator.kind |
269 |
| - else { return }; |
270 |
| - |
271 |
| - let otherwise = targets.otherwise(); |
272 |
| - if targets.iter().any(|t| t.1 == otherwise) { |
273 |
| - *targets = SwitchTargets::new( |
274 |
| - targets.iter().filter(|t| t.1 != otherwise), |
275 |
| - targets.otherwise(), |
276 |
| - ); |
277 |
| - } |
278 |
| - } |
279 |
| - |
280 | 265 | fn combine_intrinsic_assert(
|
281 | 266 | &self,
|
282 | 267 | terminator: &mut Terminator<'tcx>,
|
|
0 commit comments