diff options
| author | Ellen <supbscripter@gmail.com> | 2021-09-20 09:30:23 +0100 |
|---|---|---|
| committer | Ellen <supbscripter@gmail.com> | 2021-09-20 09:30:28 +0100 |
| commit | 5fdb9e4cf43899eaab1121a77e19b20fac1835cb (patch) | |
| tree | 5ab261d341ae64f90e96739254e3b75e88f30b96 /compiler/rustc_mir_build/src | |
| parent | 78a46efff06558674b51c10d8d81758285746ab5 (diff) | |
| download | rust-5fdb9e4cf43899eaab1121a77e19b20fac1835cb.tar.gz rust-5fdb9e4cf43899eaab1121a77e19b20fac1835cb.zip | |
no ensure
Diffstat (limited to 'compiler/rustc_mir_build/src')
| -rw-r--r-- | compiler/rustc_mir_build/src/build/mod.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/rustc_mir_build/src/build/mod.rs b/compiler/rustc_mir_build/src/build/mod.rs index 0ee740a6463..4108ad50470 100644 --- a/compiler/rustc_mir_build/src/build/mod.rs +++ b/compiler/rustc_mir_build/src/build/mod.rs @@ -44,15 +44,18 @@ fn mir_build(tcx: TyCtxt<'_>, def: ty::WithOptConstParam<LocalDefId>) -> Body<'_ let body_owner_kind = tcx.hir().body_owner_kind(id); let typeck_results = tcx.typeck_opt_const_arg(def); - // Ensure unsafeck is ran before we steal the THIR. + // Ensure unsafeck and abstract const building is ran before we steal the THIR. + // We can't use `ensure()` for `thir_abstract_const` as it doesn't compute the query + // if inputs are green. This can cause ICEs when calling `thir_abstract_const` after + // THIR has been stolen if we haven't computed this query yet. match def { ty::WithOptConstParam { did, const_param_did: Some(const_param_did) } => { tcx.ensure().thir_check_unsafety_for_const_arg((did, const_param_did)); - tcx.ensure().thir_abstract_const_of_const_arg((did, const_param_did)); + drop(tcx.thir_abstract_const_of_const_arg((did, const_param_did))); } ty::WithOptConstParam { did, const_param_did: None } => { tcx.ensure().thir_check_unsafety(did); - tcx.ensure().thir_abstract_const(did); + drop(tcx.thir_abstract_const(did)); } } |
