From 784e4316ebf24c516fb956b02c661ad51031b4cb Mon Sep 17 00:00:00 2001 From: Douglas Campos Date: Wed, 6 Sep 2017 23:03:41 -0400 Subject: [PATCH] ugly, but works! --- src/librustc_mir/transform/inline.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/librustc_mir/transform/inline.rs b/src/librustc_mir/transform/inline.rs index 3f8070fb3aa3..4477496f231e 100644 --- a/src/librustc_mir/transform/inline.rs +++ b/src/librustc_mir/transform/inline.rs @@ -88,12 +88,22 @@ impl<'a, 'tcx> Inliner<'a, 'tcx> { if let TerminatorKind::Call { func: Operand::Constant(ref f), .. } = terminator.kind { if let ty::TyFnDef(callee_def_id, substs) = f.ty.sty { - callsites.push_back(CallSite { - callee: callee_def_id, - substs, - bb, - location: terminator.source_info - }); + let should_inline = match self.tcx.opt_associated_item(callee_def_id) { + Some(item) => match item.container { + ty::AssociatedItemContainer::ImplContainer(_) => true, + ty::AssociatedItemContainer::TraitContainer(_) => false, + }, + None => true + }; + + if should_inline { + callsites.push_back(CallSite { + callee: callee_def_id, + substs, + bb, + location: terminator.source_info + }); + } } } }