Skip to content

Commit aa8f2d4

Browse files
committed
Auto merge of rust-lang#89000 - Mark-Simulacrum:no-new-lrc, r=petrochenkov
Reuse existing shared Lrc for MatchImpl parent This is a small performance win for the hot path, which helps to address this regression: rust-lang#87244 (comment).
2 parents 35c8f26 + 905beab commit aa8f2d4

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

compiler/rustc_infer/src/infer/error_reporting/nice_region_error/mismatched_static_lifetime.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> {
3939
ObligationCauseCode::MatchImpl(parent, impl_def_id) => (parent, impl_def_id),
4040
_ => return None,
4141
};
42-
let binding_span = match **parent {
42+
let binding_span = match parent.code {
4343
ObligationCauseCode::BindingObligation(_def_id, binding_span) => binding_span,
4444
_ => return None,
4545
};

compiler/rustc_infer/src/infer/error_reporting/nice_region_error/static_impl_trait.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ impl<'a, 'tcx> NiceRegionError<'a, 'tcx> {
189189
}
190190
if let SubregionOrigin::Subtype(box TypeTrace { cause, .. }) = &sub_origin {
191191
let code = match &cause.code {
192-
ObligationCauseCode::MatchImpl(parent, ..) => &**parent,
192+
ObligationCauseCode::MatchImpl(parent, ..) => &parent.code,
193193
_ => &cause.code,
194194
};
195195
if let ObligationCauseCode::ItemObligation(item_def_id) = *code {

compiler/rustc_middle/src/traits/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ pub enum ObligationCauseCode<'tcx> {
349349
WellFormed(Option<WellFormedLoc>),
350350

351351
/// From `match_impl`. The cause for us having to match an impl, and the DefId we are matching against.
352-
MatchImpl(Lrc<ObligationCauseCode<'tcx>>, DefId),
352+
MatchImpl(ObligationCause<'tcx>, DefId),
353353
}
354354

355355
/// The 'location' at which we try to perform HIR-based wf checking.

compiler/rustc_trait_selection/src/traits/select/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -2034,7 +2034,7 @@ impl<'cx, 'tcx> SelectionContext<'cx, 'tcx> {
20342034
let cause = ObligationCause::new(
20352035
obligation.cause.span,
20362036
obligation.cause.body_id,
2037-
ObligationCauseCode::MatchImpl(Lrc::new(obligation.cause.code.clone()), impl_def_id),
2037+
ObligationCauseCode::MatchImpl(obligation.cause.clone(), impl_def_id),
20382038
);
20392039

20402040
let InferOk { obligations, .. } = self

0 commit comments

Comments
 (0)