mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-21 11:23:03 +00:00
Move partitioning.rs to rustc_mir
This commit is contained in:
parent
116e43f73b
commit
45f8a3b30c
@ -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<Linkage> {
|
||||
@ -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 {
|
||||
|
@ -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>,
|
||||
|
@ -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;
|
@ -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};
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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<Span> {
|
||||
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) => {
|
||||
|
Loading…
Reference in New Issue
Block a user