Skip to content

Commit 3357702

Browse files
committed
Replace generics_require_inlining with generics.requires_monomorphization
1 parent 88d5b2f commit 3357702

File tree

2 files changed

+6
-22
lines changed

2 files changed

+6
-22
lines changed

src/librustc/middle/reachable.rs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,6 @@ use hir::intravisit::{Visitor, NestedVisitorMap};
3434
use hir::itemlikevisit::ItemLikeVisitor;
3535
use hir::intravisit;
3636

37-
// Returns true if the given set of generics implies that the item it's
38-
// associated with must be inlined.
39-
fn generics_require_inlining(generics: &ty::Generics) -> bool {
40-
for param in &generics.params {
41-
match param.kind {
42-
GenericParamDefKind::Lifetime { .. } => {}
43-
GenericParamDefKind::Type { .. } => return true,
44-
}
45-
}
46-
false
47-
}
48-
4937
// Returns true if the given item must be inlined because it may be
5038
// monomorphized or it was marked with `#[inline]`. This will only return
5139
// true for functions.
@@ -60,7 +48,7 @@ fn item_might_be_inlined(tcx: TyCtxt<'a, 'tcx, 'tcx>,
6048
hir::ItemKind::Impl(..) |
6149
hir::ItemKind::Fn(..) => {
6250
let generics = tcx.generics_of(tcx.hir.local_def_id(item.id));
63-
generics_require_inlining(generics)
51+
generics.requires_monomorphization(tcx)
6452
}
6553
_ => false,
6654
}
@@ -71,7 +59,7 @@ fn method_might_be_inlined<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
7159
impl_src: DefId) -> bool {
7260
let codegen_fn_attrs = tcx.codegen_fn_attrs(impl_item.hir_id.owner_def_id());
7361
let generics = tcx.generics_of(tcx.hir.local_def_id(impl_item.id));
74-
if codegen_fn_attrs.requests_inline() || generics_require_inlining(generics) {
62+
if codegen_fn_attrs.requests_inline() || generics.requires_monomorphization(tcx) {
7563
return true
7664
}
7765
if let Some(impl_node_id) = tcx.hir.as_local_node_id(impl_src) {
@@ -189,8 +177,7 @@ impl<'a, 'tcx> ReachableContext<'a, 'tcx> {
189177
hir::ImplItemKind::Method(..) => {
190178
let attrs = self.tcx.codegen_fn_attrs(def_id);
191179
let generics = self.tcx.generics_of(def_id);
192-
if generics_require_inlining(&generics) ||
193-
attrs.requests_inline() {
180+
if generics.requires_monomorphization(self.tcx) || attrs.requests_inline() {
194181
true
195182
} else {
196183
let impl_did = self.tcx
@@ -203,7 +190,7 @@ impl<'a, 'tcx> ReachableContext<'a, 'tcx> {
203190
match self.tcx.hir.expect_item(impl_node_id).node {
204191
hir::ItemKind::Impl(..) => {
205192
let generics = self.tcx.generics_of(impl_did);
206-
generics_require_inlining(&generics)
193+
generics.requires_monomorphization(self.tcx)
207194
}
208195
_ => false
209196
}

src/librustc_metadata/encoder.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1262,12 +1262,9 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> {
12621262
hir::ItemKind::Const(..) => self.encode_optimized_mir(def_id),
12631263
hir::ItemKind::Fn(_, header, ..) => {
12641264
let generics = tcx.generics_of(def_id);
1265-
let has_types = generics.params.iter().any(|param| match param.kind {
1266-
ty::GenericParamDefKind::Type { .. } => true,
1267-
_ => false,
1268-
});
12691265
let needs_inline =
1270-
(has_types || tcx.codegen_fn_attrs(def_id).requests_inline()) &&
1266+
(generics.requires_monomorphization(tcx) ||
1267+
tcx.codegen_fn_attrs(def_id).requests_inline()) &&
12711268
!self.metadata_output_only();
12721269
let always_encode_mir = self.tcx.sess.opts.debugging_opts.always_encode_mir;
12731270
if needs_inline

0 commit comments

Comments
 (0)