diff options
| author | Ben Kimock <kimockb@gmail.com> | 2023-02-19 15:50:00 -0500 |
|---|---|---|
| committer | Ben Kimock <kimockb@gmail.com> | 2023-02-19 23:14:58 -0500 |
| commit | 0e05280d75e43da007efd50ce49f4e1e8456bcbd (patch) | |
| tree | 08cdddb70f0147fbb2a8e87adc88f8f1e01744ba /compiler/rustc_mir_transform/src/instcombine.rs | |
| parent | eebdfb55fce148676c24555505aebf648123b2de (diff) | |
| download | rust-0e05280d75e43da007efd50ce49f4e1e8456bcbd.tar.gz rust-0e05280d75e43da007efd50ce49f4e1e8456bcbd.zip | |
Add an InstCombine for redundant casts
Diffstat (limited to 'compiler/rustc_mir_transform/src/instcombine.rs')
| -rw-r--r-- | compiler/rustc_mir_transform/src/instcombine.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/instcombine.rs b/compiler/rustc_mir_transform/src/instcombine.rs index 0534e688703..3896f0e57ea 100644 --- a/compiler/rustc_mir_transform/src/instcombine.rs +++ b/compiler/rustc_mir_transform/src/instcombine.rs @@ -30,6 +30,7 @@ impl<'tcx> MirPass<'tcx> for InstCombine { ctx.combine_bool_cmp(&statement.source_info, rvalue); ctx.combine_ref_deref(&statement.source_info, rvalue); ctx.combine_len(&statement.source_info, rvalue); + ctx.combine_cast(&statement.source_info, rvalue); } _ => {} } @@ -142,6 +143,14 @@ impl<'tcx> InstCombineContext<'tcx, '_> { } } + fn combine_cast(&self, _source_info: &SourceInfo, rvalue: &mut Rvalue<'tcx>) { + if let Rvalue::Cast(_kind, operand, ty) = rvalue { + if operand.ty(self.local_decls, self.tcx) == *ty { + *rvalue = Rvalue::Use(operand.clone()); + } + } + } + fn combine_primitive_clone( &self, terminator: &mut Terminator<'tcx>, |
