about summary refs log tree commit diff
path: root/src/librustc_mir/transform
diff options
context:
space:
mode:
authorDouglas Campos <qmx@qmx.me>2017-09-27 22:22:55 -0400
committerDouglas Campos <qmx@qmx.me>2017-09-29 22:34:47 -0400
commit8a5800e1d45a5d4960f3e889cff01923be05e1ce (patch)
tree0ecd75635ed4898fbdb39b29b46c329d2922b479 /src/librustc_mir/transform
parent24fc50fffacef28d580a67b3c881f62d4752a860 (diff)
downloadrust-8a5800e1d45a5d4960f3e889cff01923be05e1ce.tar.gz
rust-8a5800e1d45a5d4960f3e889cff01923be05e1ce.zip
take ParamEnv into account when resolving
Diffstat (limited to 'src/librustc_mir/transform')
-rw-r--r--src/librustc_mir/transform/inline.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/librustc_mir/transform/inline.rs b/src/librustc_mir/transform/inline.rs
index 426dce4da1a..1eb8f21f80a 100644
--- a/src/librustc_mir/transform/inline.rs
+++ b/src/librustc_mir/transform/inline.rs
@@ -78,7 +78,7 @@ impl<'a, 'tcx> Inliner<'a, 'tcx> {
         let mut callsites = VecDeque::new();
 
         // Only do inlining into fn bodies.
-        if let MirSource::Fn(_) = self.source {
+        if let MirSource::Fn(caller_id) = self.source {
             for (bb, bb_data) in caller_mir.basic_blocks().iter_enumerated() {
                 // Don't inline calls that are in cleanup blocks.
                 if bb_data.is_cleanup { continue; }
@@ -88,7 +88,10 @@ 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 {
-                            if let Some(instance) = Instance::resolve(self.tcx, callee_def_id, substs) {
+                            let caller_def_id = self.tcx.hir.local_def_id(caller_id);
+                            let param_env = self.tcx.param_env(caller_def_id);
+
+                            if let Some(instance) = Instance::resolve(self.tcx, param_env, callee_def_id, substs) {
                                 callsites.push_back(CallSite {
                                     callee: instance.def_id(),
                                     substs: instance.substs,