diff options
| author | Michael Goulet <michael@errs.io> | 2022-01-17 20:38:38 -0800 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-01-17 21:13:43 -0800 |
| commit | b651d5a1f4b3b8ab54926d4f5dd0390a94f5bac3 (patch) | |
| tree | 1ba6ee0576696720278ff309eebcfbbb768bd8e2 /compiler/rustc_mir_transform/src | |
| parent | ee5d8d37baaf5b5a81a98396952839c73ae41c68 (diff) | |
| download | rust-b651d5a1f4b3b8ab54926d4f5dd0390a94f5bac3.tar.gz rust-b651d5a1f4b3b8ab54926d4f5dd0390a94f5bac3.zip | |
Fix Inline MIR pass on a function with un-satisfiable bounds
Diffstat (limited to 'compiler/rustc_mir_transform/src')
| -rw-r--r-- | compiler/rustc_mir_transform/src/inline.rs | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/inline.rs b/compiler/rustc_mir_transform/src/inline.rs index e1f30fef44f..6220daa0b6b 100644 --- a/compiler/rustc_mir_transform/src/inline.rs +++ b/compiler/rustc_mir_transform/src/inline.rs @@ -7,6 +7,7 @@ use rustc_index::vec::Idx; use rustc_middle::middle::codegen_fn_attrs::{CodegenFnAttrFlags, CodegenFnAttrs}; use rustc_middle::mir::visit::*; use rustc_middle::mir::*; +use rustc_middle::traits::ObligationCause; use rustc_middle::ty::subst::Subst; use rustc_middle::ty::{self, ConstKind, Instance, InstanceDef, ParamEnv, Ty, TyCtxt}; use rustc_span::{hygiene::ExpnKind, ExpnData, Span}; @@ -75,10 +76,18 @@ fn inline<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) -> bool { return false; } + let param_env = tcx.param_env_reveal_all_normalized(def_id); + let param_env = rustc_trait_selection::traits::normalize_param_env_or_error( + tcx, + def_id, + param_env, + ObligationCause::misc(body.span, hir_id), + ); + let mut this = Inliner { tcx, - param_env: tcx.param_env_reveal_all_normalized(body.source.def_id()), - codegen_fn_attrs: tcx.codegen_fn_attrs(body.source.def_id()), + param_env, + codegen_fn_attrs: tcx.codegen_fn_attrs(def_id), hir_id, history: Vec::new(), changed: false, |
