Auto merge of #148066 - lcnr:remove-perf-hack, r=BoxyUwU
remove a performance hack
This hack seems no longer used 🤔 nalgebra compiles without it.
Let's run perf to see whether it matters.
r? `@BoxyUwU`
This commit is contained in:
@@ -1308,36 +1308,6 @@ where
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
// HACK: We bail with overflow if the response would have too many non-region
|
|
||||||
// inference variables. This tends to only happen if we encounter a lot of
|
|
||||||
// ambiguous alias types which get replaced with fresh inference variables
|
|
||||||
// during generalization. This prevents hangs caused by an exponential blowup,
|
|
||||||
// see tests/ui/traits/next-solver/coherence-alias-hang.rs.
|
|
||||||
match self.current_goal_kind {
|
|
||||||
// We don't do so for `NormalizesTo` goals as we erased the expected term and
|
|
||||||
// bailing with overflow here would prevent us from detecting a type-mismatch,
|
|
||||||
// causing a coherence error in diesel, see #131969. We still bail with overflow
|
|
||||||
// when later returning from the parent AliasRelate goal.
|
|
||||||
CurrentGoalKind::NormalizesTo => {}
|
|
||||||
CurrentGoalKind::Misc | CurrentGoalKind::CoinductiveTrait => {
|
|
||||||
let num_non_region_vars = canonical
|
|
||||||
.variables
|
|
||||||
.iter()
|
|
||||||
.filter(|c| !c.is_region() && c.is_existential())
|
|
||||||
.count();
|
|
||||||
if num_non_region_vars > self.cx().recursion_limit() {
|
|
||||||
debug!(?num_non_region_vars, "too many inference variables -> overflow");
|
|
||||||
return Ok(self.make_ambiguous_response_no_constraints(
|
|
||||||
MaybeCause::Overflow {
|
|
||||||
suggest_increasing_limit: true,
|
|
||||||
keep_constraints: false,
|
|
||||||
},
|
|
||||||
OpaqueTypesJank::AllGood,
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(canonical)
|
Ok(canonical)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ error[E0275]: overflow evaluating the requirement `W<_>: Trait`
|
|||||||
LL | impls::<W<_>>();
|
LL | impls::<W<_>>();
|
||||||
| ^^^^
|
| ^^^^
|
||||||
|
|
|
|
||||||
= help: consider increasing the recursion limit by adding a `#![recursion_limit = "256"]` attribute to your crate (`fixpoint_exponential_growth`)
|
|
||||||
note: required by a bound in `impls`
|
note: required by a bound in `impls`
|
||||||
--> $DIR/fixpoint-exponential-growth.rs:30:13
|
--> $DIR/fixpoint-exponential-growth.rs:30:13
|
||||||
|
|
|
|
||||||
|
|||||||
Reference in New Issue
Block a user