From 45f8a3b30c80b17ff78ac8d1aa14784a73ca593e Mon Sep 17 00:00:00 2001 From: Maik Klein Date: Thu, 23 Nov 2017 16:02:02 +0100 Subject: [PATCH] Move partitioning.rs to rustc_mir --- src/librustc_mir/monomorphize/item.rs | 26 +++++++++++++++++ src/librustc_mir/monomorphize/mod.rs | 2 ++ .../monomorphize}/partitioning.rs | 5 ++-- src/librustc_trans/base.rs | 2 +- src/librustc_trans/consts.rs | 2 +- src/librustc_trans/context.rs | 2 +- src/librustc_trans/lib.rs | 1 - src/librustc_trans/trans_item.rs | 29 +------------------ 8 files changed, 35 insertions(+), 34 deletions(-) rename src/{librustc_trans => librustc_mir/monomorphize}/partitioning.rs (99%) diff --git a/src/librustc_mir/monomorphize/item.rs b/src/librustc_mir/monomorphize/item.rs index 72efe23f77b..c3fb126ea18 100644 --- a/src/librustc_mir/monomorphize/item.rs +++ b/src/librustc_mir/monomorphize/item.rs @@ -26,6 +26,7 @@ use syntax::attr::{self, InlineAttr}; use std::fmt::{self, Write}; use std::iter; use rustc::mir::mono::Linkage; +use syntax_pos::symbol::Symbol; pub use rustc::mir::mono::MonoItem; pub fn linkage_by_name(name: &str) -> Option { @@ -83,6 +84,31 @@ pub enum InstantiationMode { pub trait MonoItemExt<'a, 'tcx>: fmt::Debug { fn as_mono_item(&self) -> &MonoItem<'tcx>; + fn is_generic_fn(&self) -> bool { + match *self.as_mono_item() { + MonoItem::Fn(ref instance) => { + instance.substs.types().next().is_some() + } + MonoItem::Static(..) | + MonoItem::GlobalAsm(..) => false, + } + } + + fn symbol_name(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> ty::SymbolName { + match *self.as_mono_item() { + MonoItem::Fn(instance) => tcx.symbol_name(instance), + MonoItem::Static(node_id) => { + let def_id = tcx.hir.local_def_id(node_id); + tcx.symbol_name(Instance::mono(tcx, def_id)) + } + MonoItem::GlobalAsm(node_id) => { + let def_id = tcx.hir.local_def_id(node_id); + ty::SymbolName { + name: Symbol::intern(&format!("global_asm_{:?}", def_id)).as_str() + } + } + } + } fn instantiation_mode(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> InstantiationMode { diff --git a/src/librustc_mir/monomorphize/mod.rs b/src/librustc_mir/monomorphize/mod.rs index 76c9386178d..fcf0d71dccb 100644 --- a/src/librustc_mir/monomorphize/mod.rs +++ b/src/librustc_mir/monomorphize/mod.rs @@ -16,9 +16,11 @@ use rustc::ty::subst::Kind; use rustc::ty::{self, Ty, TyCtxt}; pub use rustc::ty::Instance; +pub use self::item::{MonoItem, MonoItemExt}; pub mod collector; pub mod item; +pub mod partitioning; fn fn_once_adapter_instance<'a, 'tcx>( tcx: TyCtxt<'a, 'tcx, 'tcx>, diff --git a/src/librustc_trans/partitioning.rs b/src/librustc_mir/monomorphize/partitioning.rs similarity index 99% rename from src/librustc_trans/partitioning.rs rename to src/librustc_mir/monomorphize/partitioning.rs index 6897a4aa5a5..c9defe142ea 100644 --- a/src/librustc_trans/partitioning.rs +++ b/src/librustc_mir/monomorphize/partitioning.rs @@ -102,7 +102,7 @@ //! source-level module, functions from the same module will be available for //! inlining, even when they are not marked #[inline]. -use rustc_mir::monomorphize::collector::InliningMap; +use monomorphize::collector::InliningMap; use rustc::dep_graph::WorkProductId; use rustc::hir::def_id::DefId; use rustc::hir::map::DefPathData; @@ -113,7 +113,8 @@ use rustc::util::nodemap::{FxHashMap, FxHashSet}; use std::collections::hash_map::Entry; use syntax::ast::NodeId; use syntax::symbol::{Symbol, InternedString}; -use trans_item::{MonoItem, BaseMonoItemExt, MonoItemExt, InstantiationMode}; +use rustc::mir::mono::MonoItem; +use monomorphize::item::{MonoItemExt, InstantiationMode}; use rustc::ty::subst::Subst; pub use rustc::mir::mono::CodegenUnit; diff --git a/src/librustc_trans/base.rs b/src/librustc_trans/base.rs index fd470475071..79b3d314e12 100644 --- a/src/librustc_trans/base.rs +++ b/src/librustc_trans/base.rs @@ -64,7 +64,7 @@ use declare; use meth; use mir; use monomorphize::Instance; -use partitioning::{self, PartitioningStrategy, CodegenUnit, CodegenUnitExt}; +use monomorphize::partitioning::{self, PartitioningStrategy, CodegenUnit, CodegenUnitExt}; use symbol_names_test; use time_graph; use trans_item::{MonoItem, BaseMonoItemExt, MonoItemExt, DefPathBasedNames}; diff --git a/src/librustc_trans/consts.rs b/src/librustc_trans/consts.rs index 226eec647a8..f9fbcebd32e 100644 --- a/src/librustc_trans/consts.rs +++ b/src/librustc_trans/consts.rs @@ -16,7 +16,7 @@ use rustc::hir::map as hir_map; use rustc::middle::const_val::ConstEvalErr; use debuginfo; use base; -use trans_item::{MonoItem, MonoItemExt}; +use monomorphize::{MonoItem, MonoItemExt}; use common::{CrateContext, val_ty}; use declare; use monomorphize::Instance; diff --git a/src/librustc_trans/context.rs b/src/librustc_trans/context.rs index 5ecc3fb4ebe..d5e71062f74 100644 --- a/src/librustc_trans/context.rs +++ b/src/librustc_trans/context.rs @@ -22,7 +22,7 @@ use base; use declare; use monomorphize::Instance; -use partitioning::CodegenUnit; +use monomorphize::partitioning::CodegenUnit; use type_::Type; use type_of::PointeeInfo; diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs index bf25e74de8b..c4849c621e8 100644 --- a/src/librustc_trans/lib.rs +++ b/src/librustc_trans/lib.rs @@ -138,7 +138,6 @@ mod llvm_util; mod metadata; mod meth; mod mir; -mod partitioning; mod symbol_names_test; mod time_graph; mod trans_item; diff --git a/src/librustc_trans/trans_item.rs b/src/librustc_trans/trans_item.rs index 8270168642f..31d8e092c4a 100644 --- a/src/librustc_trans/trans_item.rs +++ b/src/librustc_trans/trans_item.rs @@ -25,12 +25,11 @@ use monomorphize::Instance; use type_of::LayoutLlvmExt; use rustc::hir; use rustc::mir::mono::{Linkage, Visibility}; -use rustc::ty::{self, TyCtxt, TypeFoldable}; +use rustc::ty::{TyCtxt, TypeFoldable}; use rustc::ty::layout::LayoutOf; use syntax::ast; use syntax::attr; use syntax_pos::Span; -use syntax_pos::symbol::Symbol; use std::fmt; pub use rustc::mir::mono::MonoItem; @@ -108,22 +107,6 @@ pub trait MonoItemExt<'a, 'tcx>: fmt::Debug + BaseMonoItemExt<'a, 'tcx> { ccx.codegen_unit().name()); } - fn symbol_name(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> ty::SymbolName { - match *self.as_mono_item() { - MonoItem::Fn(instance) => tcx.symbol_name(instance), - MonoItem::Static(node_id) => { - let def_id = tcx.hir.local_def_id(node_id); - tcx.symbol_name(Instance::mono(tcx, def_id)) - } - MonoItem::GlobalAsm(node_id) => { - let def_id = tcx.hir.local_def_id(node_id); - ty::SymbolName { - name: Symbol::intern(&format!("global_asm_{:?}", def_id)).as_str() - } - } - } - } - fn local_span(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>) -> Option { match *self.as_mono_item() { MonoItem::Fn(Instance { def, .. }) => { @@ -136,16 +119,6 @@ pub trait MonoItemExt<'a, 'tcx>: fmt::Debug + BaseMonoItemExt<'a, 'tcx> { }.map(|node_id| tcx.hir.span(node_id)) } - fn is_generic_fn(&self) -> bool { - match *self.as_mono_item() { - MonoItem::Fn(ref instance) => { - instance.substs.types().next().is_some() - } - MonoItem::Static(..) | - MonoItem::GlobalAsm(..) => false, - } - } - fn to_raw_string(&self) -> String { match *self.as_mono_item() { MonoItem::Fn(instance) => {