diff options
| author | Michael Goulet <michael@errs.io> | 2022-06-03 15:21:57 -0700 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-06-03 17:39:10 -0700 |
| commit | 15cccb97d60a19fc7120bb57840a83bdcc90dbad (patch) | |
| tree | 740726dc8cddbef287de9631a3fc36195b5eb29f /compiler/rustc_passes | |
| parent | e40d5e83dc133d093c22c7ff016b10daa4f40dcf (diff) | |
| download | rust-15cccb97d60a19fc7120bb57840a83bdcc90dbad.tar.gz rust-15cccb97d60a19fc7120bb57840a83bdcc90dbad.zip | |
Encode MIR for 'unreachable' non-generic fns
Diffstat (limited to 'compiler/rustc_passes')
| -rw-r--r-- | compiler/rustc_passes/src/reachable.rs | 33 |
1 files changed, 8 insertions, 25 deletions
diff --git a/compiler/rustc_passes/src/reachable.rs b/compiler/rustc_passes/src/reachable.rs index 0ded6a421f5..75376cdc592 100644 --- a/compiler/rustc_passes/src/reachable.rs +++ b/compiler/rustc_passes/src/reachable.rs @@ -148,32 +148,15 @@ impl<'tcx> ReachableContext<'tcx> { hir::TraitItemKind::Fn(_, hir::TraitFn::Required(_)) | hir::TraitItemKind::Type(..) => false, }, - Some(Node::ImplItem(impl_item)) => { - match impl_item.kind { - hir::ImplItemKind::Const(..) => true, - hir::ImplItemKind::Fn(..) => { - let attrs = self.tcx.codegen_fn_attrs(def_id); - let generics = self.tcx.generics_of(def_id); - if generics.requires_monomorphization(self.tcx) || attrs.requests_inline() { - true - } else { - let hir_id = self.tcx.hir().local_def_id_to_hir_id(def_id); - let impl_did = self.tcx.hir().get_parent_item(hir_id); - // Check the impl. If the generics on the self - // type of the impl require inlining, this method - // does too. - match self.tcx.hir().expect_item(impl_did).kind { - hir::ItemKind::Impl { .. } => { - let generics = self.tcx.generics_of(impl_did); - generics.requires_monomorphization(self.tcx) - } - _ => false, - } - } - } - hir::ImplItemKind::TyAlias(_) => false, + Some(Node::ImplItem(impl_item)) => match impl_item.kind { + hir::ImplItemKind::Const(..) => true, + hir::ImplItemKind::Fn(..) => { + let hir_id = self.tcx.hir().local_def_id_to_hir_id(def_id); + let impl_did = self.tcx.hir().get_parent_item(hir_id); + method_might_be_inlined(self.tcx, impl_item, impl_did) } - } + hir::ImplItemKind::TyAlias(_) => false, + }, Some(_) => false, None => false, // This will happen for default methods. } |
