From e76a75fa6064c3f4125b0cf1b8b8edf017a674ae Mon Sep 17 00:00:00 2001 From: sjwang05 <63834813+sjwang05@users.noreply.github.com> Date: Sat, 15 Aug 2026 21:35:05 -0700 Subject: [PATCH] only rerun const eval if the const actually references opaques --- .../rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs b/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs index 68fc54605754d..bf9c0c4cae084 100644 --- a/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs +++ b/compiler/rustc_next_trait_solver/src/solve/eval_ctxt/mod.rs @@ -1407,7 +1407,12 @@ where alias_const: ty::AliasConst, ) -> Result, RerunNonErased> { if self.typing_mode().is_erased_not_coherence() { - match self.opaque_accesses.rerun_always(RerunReason::EvaluateConst)? {} + let resolved = self.resolve_vars_if_possible(alias_const); + // FIXME: get rid of this once GCE is removed + let is_gce = self.cx().features().generic_const_exprs(); + if resolved.has_opaque_types() || is_gce { + match self.opaque_accesses.rerun_always(RerunReason::EvaluateConst)? {} + } } Ok(self.delegate.evaluate_const(param_env, alias_const))