diff options
| author | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2023-09-27 11:23:39 +0000 |
|---|---|---|
| committer | Oli Scherer <git-spam-no-reply9815368754983@oli-obk.de> | 2023-09-28 16:13:38 +0000 |
| commit | 2d4201f7c65b223967bb12aed2a790f85e457969 (patch) | |
| tree | 9b25bd9b6f9129ed74415eaf69559bac174a9ba3 /compiler/rustc_mir_transform/src | |
| parent | 6ea2db7c2d78182fabf66a8c6ffc856446e1cf81 (diff) | |
Skip reinterning if nothing changed
Diffstat (limited to 'compiler/rustc_mir_transform/src')
| -rw-r--r-- | compiler/rustc_mir_transform/src/reveal_all.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/reveal_all.rs b/compiler/rustc_mir_transform/src/reveal_all.rs index 6cc0d383119..55f1eac6f84 100644 --- a/compiler/rustc_mir_transform/src/reveal_all.rs +++ b/compiler/rustc_mir_transform/src/reveal_all.rs @@ -32,6 +32,10 @@ impl<'tcx> MutVisitor<'tcx> for RevealAllVisitor<'tcx> { _context: PlaceContext, _location: Location, ) { + // Performance optimization: don't reintern if there is no `OpaqueCast` to remove. + if place.projection.iter().all(|elem| !matches!(elem, ProjectionElem::OpaqueCast(_))) { + return; + } // `OpaqueCast` projections are only needed if there are opaque types on which projections are performed. // After the `RevealAll` pass, all opaque types are replaced with their hidden types, so we don't need these // projections anymore. |
