diff options
| author | Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com> | 2023-12-06 07:22:44 +0000 |
|---|---|---|
| committer | Ali MJ Al-Nasrawy <alimjalnasrawy@gmail.com> | 2023-12-13 14:57:52 +0000 |
| commit | a1459c3fca5f9b35918d576a7bf79ce15d279719 (patch) | |
| tree | 68fab43d097c3e3dce8677efb157ef92b5528453 | |
| parent | 85338197d402e0d94f9113bef4e3343921f3391d (diff) | |
| download | rust-a1459c3fca5f9b35918d576a7bf79ce15d279719.tar.gz rust-a1459c3fca5f9b35918d576a7bf79ce15d279719.zip | |
fix small perf regressions
| -rw-r--r-- | compiler/rustc_middle/src/infer/canonical.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler/rustc_middle/src/infer/canonical.rs b/compiler/rustc_middle/src/infer/canonical.rs index c231a0f0b64..232c84158ef 100644 --- a/compiler/rustc_middle/src/infer/canonical.rs +++ b/compiler/rustc_middle/src/infer/canonical.rs @@ -34,7 +34,7 @@ use std::ops::Index; use crate::infer::MemberConstraint; use crate::mir::ConstraintCategory; use crate::ty::GenericArg; -use crate::ty::{self, BoundVar, List, Region, Ty, TyCtxt}; +use crate::ty::{self, BoundVar, List, Region, Ty, TyCtxt, TypeFlags, TypeVisitableExt}; pub type Canonical<'tcx, V> = IrCanonical<TyCtxt<'tcx>, V>; @@ -315,6 +315,16 @@ impl<'tcx> CanonicalParamEnvCache<'tcx> { &mut OriginalQueryValues<'tcx>, ) -> Canonical<'tcx, ty::ParamEnv<'tcx>>, ) -> Canonical<'tcx, ty::ParamEnv<'tcx>> { + if !key.has_type_flags( + TypeFlags::HAS_INFER | TypeFlags::HAS_PLACEHOLDER | TypeFlags::HAS_FREE_REGIONS, + ) { + return Canonical { + max_universe: ty::UniverseIndex::ROOT, + variables: List::empty(), + value: key, + }; + } + assert_eq!(state.var_values.len(), 0); assert_eq!(state.universe_map.len(), 1); debug_assert_eq!(&*state.universe_map, &[ty::UniverseIndex::ROOT]); |
