diff options
author | b-naber <b_naber@gmx.de> | 2023-05-04 21:03:57 +0000 |
---|---|---|
committer | b-naber <b_naber@gmx.de> | 2023-05-10 16:03:52 +0000 |
commit | e7a2f52ba163a47e751b6e6d666b52c2acdd0949 (patch) | |
tree | 2305971c67a1883c2b80fa6ea276adf72ae92dd4 /compiler/rustc_mir_dataflow | |
parent | 7871bec7aaad47e8bfaca4fc06c5cb96c466917f (diff) | |
download | rust-e7a2f52ba163a47e751b6e6d666b52c2acdd0949.tar.gz |
don't inline polymorphic adt instances whose fields contain projections
in DropGlue.
Diffstat (limited to 'compiler/rustc_mir_dataflow')
-rw-r--r-- | compiler/rustc_mir_dataflow/src/elaborate_drops.rs | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/compiler/rustc_mir_dataflow/src/elaborate_drops.rs b/compiler/rustc_mir_dataflow/src/elaborate_drops.rs index e2f538e22b7..18895072c3b 100644 --- a/compiler/rustc_mir_dataflow/src/elaborate_drops.rs +++ b/compiler/rustc_mir_dataflow/src/elaborate_drops.rs @@ -272,15 +272,10 @@ where let field = FieldIdx::new(i); let subpath = self.elaborator.field_subpath(variant_path, field); let tcx = self.tcx(); - assert_eq!(self.elaborator.param_env().reveal(), Reveal::All); - let fty = f.ty(tcx, substs); - let field_ty = match tcx - .try_normalize_erasing_regions(self.elaborator.param_env(), f.ty(tcx, substs)) - { - Ok(f_ty) => f_ty, - Err(_) => fty, - }; + assert_eq!(self.elaborator.param_env().reveal(), Reveal::All); + let field_ty = + tcx.normalize_erasing_regions(self.elaborator.param_env(), f.ty(tcx, substs)); (tcx.mk_place_field(base_place, field, field_ty), subpath) }) |