about summary refs log tree commit diff
path: root/compiler/rustc_mir/src/transform/mod.rs
diff options
context:
space:
mode:
authoroli <github35764891676564198441@oli-obk.de>2020-12-29 16:21:52 +0000
committeroli <github35764891676564198441@oli-obk.de>2021-01-23 16:51:22 +0000
commitb8727e2d604e37a1510afaa9bd8777fecdcb5da4 (patch)
treef3659f892e7f967860ead03af063767f760a7576 /compiler/rustc_mir/src/transform/mod.rs
parent4d0dd02ee07bddad9136f95c9f7846ebf3eb3fc5 (diff)
downloadrust-b8727e2d604e37a1510afaa9bd8777fecdcb5da4.tar.gz
rust-b8727e2d604e37a1510afaa9bd8777fecdcb5da4.zip
Prevent query cycles during inlining
Diffstat (limited to 'compiler/rustc_mir/src/transform/mod.rs')
-rw-r--r--compiler/rustc_mir/src/transform/mod.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/rustc_mir/src/transform/mod.rs b/compiler/rustc_mir/src/transform/mod.rs
index e509c35de40..ea62f9a8f95 100644
--- a/compiler/rustc_mir/src/transform/mod.rs
+++ b/compiler/rustc_mir/src/transform/mod.rs
@@ -419,6 +419,15 @@ fn mir_drops_elaborated_and_const_checked<'tcx>(
         tcx.ensure().mir_borrowck(def.did);
     }
 
+    let hir_id = tcx.hir().local_def_id_to_hir_id(def.did);
+    use rustc_middle::hir::map::blocks::FnLikeNode;
+    let is_fn_like = FnLikeNode::from_node(tcx.hir().get(hir_id)).is_some();
+    if is_fn_like {
+        let did = def.did.to_def_id();
+        let def = ty::WithOptConstParam::unknown(did);
+        let _ = tcx.mir_inliner_callees(ty::InstanceDef::Item(def));
+    }
+
     let (body, _) = tcx.mir_promoted(def);
     let mut body = body.steal();