Skip to content

Commit 1bbdbec

Browse files
committed
Only use the query for LocalCopy instances
1 parent 3335df2 commit 1bbdbec

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3522,6 +3522,7 @@ dependencies = [
35223522
"rustc_macros",
35233523
"rustc_metadata",
35243524
"rustc_middle",
3525+
"rustc_mir_transform",
35253526
"rustc_query_system",
35263527
"rustc_serialize",
35273528
"rustc_session",

compiler/rustc_codegen_ssa/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ rustc_index = { path = "../rustc_index" }
3232
rustc_macros = { path = "../rustc_macros" }
3333
rustc_metadata = { path = "../rustc_metadata" }
3434
rustc_middle = { path = "../rustc_middle" }
35+
rustc_mir_transform = { path = "../rustc_mir_transform" }
3536
rustc_query_system = { path = "../rustc_query_system" }
3637
rustc_serialize = { path = "../rustc_serialize" }
3738
rustc_session = { path = "../rustc_session" }

compiler/rustc_codegen_ssa/src/mir/mod.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::iter;
33
use rustc_index::IndexVec;
44
use rustc_index::bit_set::DenseBitSet;
55
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrFlags;
6+
use rustc_middle::mir::mono::{InstantiationMode, MonoItem};
67
use rustc_middle::mir::{Body, Local, UnwindTerminateReason, traversal};
78
use rustc_middle::ty::layout::{FnAbiOf, HasTyCtxt, HasTypingEnv, TyAndLayout};
89
use rustc_middle::ty::{self, Instance, Ty, TyCtxt, TypeFoldable, TypeVisitableExt};
@@ -168,7 +169,12 @@ pub fn lower_mir<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>>(
168169
let tcx = cx.tcx();
169170
let llfn = cx.get_fn(instance);
170171

171-
let mut mir = tcx.codegen_mir(instance);
172+
let mut mir = match MonoItem::Fn(instance).instantiation_mode(tcx) {
173+
InstantiationMode::LocalCopy => tcx.build_codegen_mir(instance),
174+
InstantiationMode::GloballyShared { .. } => {
175+
rustc_mir_transform::build_codegen_mir(tcx, instance)
176+
}
177+
};
172178

173179
let fn_abi = cx.fn_abi_of_instance(instance, ty::List::empty());
174180
debug!("fn_abi: {:?}", fn_abi);

0 commit comments

Comments
 (0)