diff --git a/src/librustc_codegen_llvm/abi.rs b/src/librustc_codegen_llvm/abi.rs index 4c2ff2db8adad..d0e229087287f 100644 --- a/src/librustc_codegen_llvm/abi.rs +++ b/src/librustc_codegen_llvm/abi.rs @@ -9,16 +9,17 @@ // except according to those terms. use llvm::{self, AttributePlace}; -use builder::{Builder, MemFlags}; +use rustc_codegen_ssa::MemFlags; +use builder::Builder; use context::CodegenCx; -use mir::place::PlaceRef; -use mir::operand::OperandValue; +use rustc_codegen_ssa::mir::place::PlaceRef; +use rustc_codegen_ssa::mir::operand::OperandValue; use type_::Type; use type_of::{LayoutLlvmExt, PointerKind}; use value::Value; use rustc_target::abi::call::ArgType; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use rustc_target::abi::{HasDataLayout, LayoutOf, Size, TyLayout, Abi as LayoutAbi}; use rustc::ty::{self, Ty, Instance}; diff --git a/src/librustc_codegen_llvm/asm.rs b/src/librustc_codegen_llvm/asm.rs index 8cbc2cba7de7c..c0e7f94980993 100644 --- a/src/librustc_codegen_llvm/asm.rs +++ b/src/librustc_codegen_llvm/asm.rs @@ -15,10 +15,10 @@ use builder::Builder; use value::Value; use rustc::hir; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; -use mir::place::PlaceRef; -use mir::operand::OperandValue; +use rustc_codegen_ssa::mir::place::PlaceRef; +use rustc_codegen_ssa::mir::operand::OperandValue; use std::ffi::CString; use libc::{c_uint, c_char}; diff --git a/src/librustc_codegen_llvm/attributes.rs b/src/librustc_codegen_llvm/attributes.rs index 7570d22c4dfca..a6ecd1ab55d39 100644 --- a/src/librustc_codegen_llvm/attributes.rs +++ b/src/librustc_codegen_llvm/attributes.rs @@ -21,7 +21,7 @@ use rustc::ty::query::Providers; use rustc_data_structures::sync::Lrc; use rustc_data_structures::fx::FxHashMap; use rustc_target::spec::PanicStrategy; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use attributes; use llvm::{self, Attribute}; diff --git a/src/librustc_codegen_llvm/back/link.rs b/src/librustc_codegen_llvm/back/link.rs index 111637b6aa967..e3143e89f79f7 100644 --- a/src/librustc_codegen_llvm/back/link.rs +++ b/src/librustc_codegen_llvm/back/link.rs @@ -22,7 +22,8 @@ use rustc::session::search_paths::PathKind; use rustc::session::Session; use rustc::middle::cstore::{NativeLibrary, LibSource, NativeLibraryKind}; use rustc::middle::dependency_format::Linkage; -use {CodegenResults, CrateInfo}; +use rustc_codegen_ssa::CrateInfo; +use CodegenResults; use rustc::util::common::time; use rustc_fs_util::fix_windows_verbatim_for_gcc; use rustc::hir::def_id::CrateNum; diff --git a/src/librustc_codegen_llvm/back/write.rs b/src/librustc_codegen_llvm/back/write.rs index 60cfe203e402b..1e167046daf13 100644 --- a/src/librustc_codegen_llvm/back/write.rs +++ b/src/librustc_codegen_llvm/back/write.rs @@ -27,8 +27,7 @@ use time_graph::{self, TimeGraph, Timeline}; use llvm::{self, DiagnosticInfo, PassManager, SMDiagnostic}; use llvm_util; use {CodegenResults, ModuleLlvm}; -use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen, CompiledModule}; -use CrateInfo; +use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen, CompiledModule, CrateInfo}; use rustc::hir::def_id::{CrateNum, LOCAL_CRATE}; use rustc::ty::TyCtxt; use rustc::util::common::{time_ext, time_depth, set_time_depth, print_time_passes_entry}; diff --git a/src/librustc_codegen_llvm/base.rs b/src/librustc_codegen_llvm/base.rs index bd396e89e0728..5f8601cb6da63 100644 --- a/src/librustc_codegen_llvm/base.rs +++ b/src/librustc_codegen_llvm/base.rs @@ -24,68 +24,34 @@ //! int) and rec(x=int, y=int, z=int) will have the same llvm::Type. use super::ModuleLlvm; -use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen}; +use rustc_codegen_ssa::{ModuleCodegen, ModuleKind}; +use rustc_codegen_ssa::base::maybe_create_entry_wrapper; use super::LlvmCodegenBackend; -use abi; use back::write; use llvm; use metadata; -use rustc::dep_graph::cgu_reuse_tracker::CguReuse; -use rustc::hir::def_id::{CrateNum, DefId, LOCAL_CRATE}; -use rustc::middle::lang_items::StartFnLangItem; -use rustc::middle::weak_lang_items; -use rustc::mir::mono::{Linkage, Visibility, Stats, CodegenUnitNameBuilder}; +use rustc::mir::mono::{Linkage, Visibility, Stats}; use rustc::middle::cstore::{EncodedMetadata}; -use rustc::ty::{self, Ty, TyCtxt}; -use rustc::ty::layout::{self, Align, TyLayout, LayoutOf, HasTyCtxt}; -use rustc::ty::query::Providers; -use rustc::middle::cstore::{self, LinkagePreference}; +use rustc::ty::TyCtxt; use rustc::middle::exported_symbols; -use rustc::util::common::{time, print_time_passes_entry}; -use rustc::util::profiling::ProfileCategory; -use rustc::session::config::{self, DebugInfo, EntryFnType, Lto}; -use rustc::session::Session; -use rustc_incremental; -use mir::place::PlaceRef; -use builder::{Builder, MemFlags}; -use callee; -use rustc_mir::monomorphize::item::DefPathBasedNames; +use rustc::session::config::{self, DebugInfo}; +use builder::Builder; use common; -use rustc_codegen_ssa::common::{RealPredicate, TypeKind, IntPredicate}; -use meth; -use mir; use context::CodegenCx; -use monomorphize::Instance; -use monomorphize::partitioning::{CodegenUnit, CodegenUnitExt}; -use rustc_codegen_utils::symbol_names_test; -use time_graph; -use mono_item::{MonoItem, MonoItemExt}; - -use rustc::util::nodemap::FxHashMap; -use CrateInfo; +use monomorphize::partitioning::CodegenUnitExt; +use rustc_codegen_ssa::mono_item::MonoItemExt; use rustc_data_structures::small_c_str::SmallCStr; -use rustc_data_structures::sync::Lrc; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; -use std::any::Any; -use std::cmp; use std::ffi::CString; -use std::marker; -use std::ops::{Deref, DerefMut}; -use std::sync::mpsc; -use std::time::{Instant, Duration}; -use syntax_pos::Span; +use std::time::Instant; use syntax_pos::symbol::InternedString; -use syntax::attr; -use rustc::hir::{self, CodegenFnAttrs}; +use rustc::hir::CodegenFnAttrs; use value::Value; -use mir::operand::OperandValue; - -use rustc_codegen_utils::check_for_rustc_errors_attr; pub(crate) fn write_metadata<'a, 'gcx>( tcx: TyCtxt<'a, 'gcx, 'gcx>, diff --git a/src/librustc_codegen_llvm/builder.rs b/src/librustc_codegen_llvm/builder.rs index 40fddef8be3d3..144ee3dd26004 100644 --- a/src/librustc_codegen_llvm/builder.rs +++ b/src/librustc_codegen_llvm/builder.rs @@ -11,7 +11,7 @@ use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect}; use llvm::{self, False, BasicBlock}; use rustc_codegen_ssa::common::{IntPredicate, TypeKind, RealPredicate}; -use rustc_codegen_ssa; +use rustc_codegen_ssa::{self, MemFlags}; use common::Funclet; use context::CodegenCx; use type_::Type; @@ -22,11 +22,11 @@ use rustc::ty::{self, Ty, TyCtxt}; use rustc::ty::layout::{self, Align, Size, TyLayout}; use rustc::session::config; use rustc_data_structures::small_c_str::SmallCStr; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use syntax; -use base; -use mir::operand::{OperandValue, OperandRef}; -use mir::place::PlaceRef; +use rustc_codegen_ssa::base::to_immediate; +use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef}; +use rustc_codegen_ssa::mir::place::PlaceRef; use std::borrow::Cow; use std::ops::Range; use std::ptr; @@ -582,7 +582,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> { } load }); - OperandValue::Immediate(base::to_immediate(self, llval, place.layout)) + OperandValue::Immediate(to_immediate(self, llval, place.layout)) } else if let layout::Abi::ScalarPair(ref a, ref b) = place.layout.abi { let load = |i, scalar: &layout::Scalar| { let llptr = self.struct_gep(place.llval, i as u64); diff --git a/src/librustc_codegen_llvm/callee.rs b/src/librustc_codegen_llvm/callee.rs index d5b398d8a339d..e7c6cc50eba75 100644 --- a/src/librustc_codegen_llvm/callee.rs +++ b/src/librustc_codegen_llvm/callee.rs @@ -19,12 +19,10 @@ use llvm; use monomorphize::Instance; use context::CodegenCx; use value::Value; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; -use rustc::hir::def_id::DefId; -use rustc::ty::{self, TypeFoldable}; +use rustc::ty::TypeFoldable; use rustc::ty::layout::{LayoutOf, HasTyCtxt}; -use rustc::ty::subst::Substs; /// Codegens a reference to a fn/method item, monomorphizing and /// inlining as it goes. diff --git a/src/librustc_codegen_llvm/common.rs b/src/librustc_codegen_llvm/common.rs index 2211ec5247f97..11fc67fb92b25 100644 --- a/src/librustc_codegen_llvm/common.rs +++ b/src/librustc_codegen_llvm/common.rs @@ -13,29 +13,22 @@ //! Code that is useful in various codegen modules. use llvm::{self, True, False, Bool, BasicBlock, OperandBundleDef}; -use rustc::hir::def_id::DefId; -use rustc::middle::lang_items::LangItem; use abi; -use base; use consts; use type_::Type; use type_of::LayoutLlvmExt; use value::Value; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; -use rustc::ty::{Ty, TyCtxt}; use rustc::ty::layout::{HasDataLayout, LayoutOf, self, TyLayout, Size}; use rustc::mir::interpret::{Scalar, AllocType, Allocation}; -use rustc::hir; -use mir::constant::const_alloc_to_llvm; -use mir::place::PlaceRef; -use rustc_codegen_ssa::common::TypeKind; +use consts::const_alloc_to_llvm; +use rustc_codegen_ssa::mir::place::PlaceRef; use libc::{c_uint, c_char}; use syntax::symbol::LocalInternedString; use syntax::ast::Mutability; -use syntax_pos::Span; pub use context::CodegenCx; diff --git a/src/librustc_codegen_llvm/consts.rs b/src/librustc_codegen_llvm/consts.rs index 8a5a817f57424..f8876207b2e9b 100644 --- a/src/librustc_codegen_llvm/consts.rs +++ b/src/librustc_codegen_llvm/consts.rs @@ -11,21 +11,24 @@ use libc::c_uint; use llvm::{self, SetUnnamedAddr, True}; use rustc::hir::def_id::DefId; +use rustc::mir::interpret::{ConstValue, Allocation, read_target_uint, + Pointer, ErrorHandled, GlobalId}; use rustc::hir::Node; use debuginfo; -use base; use monomorphize::MonoItem; use common::CodegenCx; use monomorphize::Instance; use syntax_pos::Span; +use rustc_target::abi::HasDataLayout; use syntax_pos::symbol::LocalInternedString; +use base; use type_::Type; use type_of::LayoutLlvmExt; use value::Value; use rustc::ty::{self, Ty}; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; -use rustc::ty::layout::{Align, LayoutOf}; +use rustc::ty::layout::{self, Size, Align, LayoutOf}; use rustc::hir::{self, CodegenFnAttrs, CodegenFnAttrFlags}; @@ -360,7 +363,7 @@ impl StaticMethods<'tcx> for CodegenCx<'ll, 'tcx> { unsafe { let attrs = self.tcx.codegen_fn_attrs(def_id); - let (v, alloc) = match ::mir::codegen_static_initializer(&self, def_id) { + let (v, alloc) = match codegen_static_initializer(&self, def_id) { Ok(v) => v, // Error has already been reported Err(_) => return, diff --git a/src/librustc_codegen_llvm/context.rs b/src/librustc_codegen_llvm/context.rs index 3eb9728e90c72..2e229c0f4d15b 100644 --- a/src/librustc_codegen_llvm/context.rs +++ b/src/librustc_codegen_llvm/context.rs @@ -14,15 +14,13 @@ use llvm_util; use rustc::dep_graph::DepGraphSafe; use rustc::hir; use debuginfo; -use callee; -use base; use monomorphize::Instance; use value::Value; use monomorphize::partitioning::CodegenUnit; use type_::Type; use type_of::PointeeInfo; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use libc::c_uint; use rustc_data_structures::base_n; @@ -34,6 +32,9 @@ use rustc::ty::layout::{LayoutError, LayoutOf, Size, TyLayout, VariantIdx}; use rustc::ty::{self, Ty, TyCtxt}; use rustc::util::nodemap::FxHashMap; use rustc_target::spec::{HasTargetSpec, Target}; +use rustc_codegen_ssa::callee::resolve_and_get_fn; +use rustc_codegen_ssa::base::wants_msvc_seh; +use callee::get_fn; use std::ffi::CStr; use std::cell::{Cell, RefCell}; @@ -327,7 +328,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> { } fn get_fn(&self, instance: Instance<'tcx>) -> &'ll Value { - callee::get_fn(&&self,instance) + get_fn(&&self,instance) } fn get_param(&self, llfn: &'ll Value, index: c_uint) -> &'ll Value { @@ -360,11 +361,11 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> { } let tcx = self.tcx; let llfn = match tcx.lang_items().eh_personality() { - Some(def_id) if !base::wants_msvc_seh(self.sess()) => { - callee::resolve_and_get_fn(self, def_id, tcx.intern_substs(&[])) + Some(def_id) if !wants_msvc_seh(self.sess()) => { + resolve_and_get_fn(self, def_id, tcx.intern_substs(&[])) } _ => { - let name = if base::wants_msvc_seh(self.sess()) { + let name = if wants_msvc_seh(self.sess()) { "__CxxFrameHandler3" } else { "rust_eh_personality" @@ -390,7 +391,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> { let tcx = self.tcx; assert!(self.sess().target.target.options.custom_unwind_resume); if let Some(def_id) = tcx.lang_items().eh_unwind_resume() { - let llfn = callee::resolve_and_get_fn(self, def_id, tcx.intern_substs(&[])); + let llfn = resolve_and_get_fn(self, def_id, tcx.intern_substs(&[])); unwresume.set(Some(llfn)); return llfn; } @@ -446,7 +447,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> { attributes::apply_target_cpu_attr(self, llfn) } - fn closure_env_needs_indirect_debuginfo(&self) { + fn closure_env_needs_indirect_debuginfo(&self) -> bool { llvm_util::get_major_version() < 6 } diff --git a/src/librustc_codegen_llvm/debuginfo/create_scope_map.rs b/src/librustc_codegen_llvm/debuginfo/create_scope_map.rs index 8eb266f8069a8..c18e126e52003 100644 --- a/src/librustc_codegen_llvm/debuginfo/create_scope_map.rs +++ b/src/librustc_codegen_llvm/debuginfo/create_scope_map.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use super::{FunctionDebugContext, FunctionDebugContextData}; +use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, FunctionDebugContextData, MirDebugScope}; use super::metadata::file_metadata; use super::utils::{DIB, span_start}; diff --git a/src/librustc_codegen_llvm/debuginfo/gdb.rs b/src/librustc_codegen_llvm/debuginfo/gdb.rs index 607920091bca4..26e359f39cfb3 100644 --- a/src/librustc_codegen_llvm/debuginfo/gdb.rs +++ b/src/librustc_codegen_llvm/debuginfo/gdb.rs @@ -16,7 +16,7 @@ use common::CodegenCx; use builder::Builder; use rustc::session::config::DebugInfo; use value::Value; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use syntax::attr; diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs index 81d10609e2f9f..8a72fef49d7d3 100644 --- a/src/librustc_codegen_llvm/debuginfo/metadata.rs +++ b/src/librustc_codegen_llvm/debuginfo/metadata.rs @@ -17,9 +17,8 @@ use super::utils::{debug_context, DIB, span_start, use super::namespace::mangled_name_of_instance; use super::type_names::compute_debuginfo_type_name; use super::{CrateDebugContext}; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use abi; -use interfaces::ConstMethods; use value::Value; use llvm; diff --git a/src/librustc_codegen_llvm/debuginfo/mod.rs b/src/librustc_codegen_llvm/debuginfo/mod.rs index ddd346e99d5fb..67ef791866846 100644 --- a/src/librustc_codegen_llvm/debuginfo/mod.rs +++ b/src/librustc_codegen_llvm/debuginfo/mod.rs @@ -11,8 +11,8 @@ // See doc.rs for documentation. mod doc; -use self::VariableAccess::*; -use self::VariableKind::*; +use rustc_codegen_ssa::debuginfo::VariableAccess::*; +use rustc_codegen_ssa::debuginfo::VariableKind::*; use self::utils::{DIB, span_start, create_DIArray, is_node_local_to_unit}; use self::namespace::mangled_name_of_instance; @@ -38,6 +38,8 @@ use rustc::util::nodemap::{DefIdMap, FxHashMap, FxHashSet}; use rustc_data_structures::small_c_str::SmallCStr; use rustc_data_structures::indexed_vec::IndexVec; use value::Value; +use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, MirDebugScope, VariableAccess, + VariableKind, FunctionDebugContextData}; use libc::c_uint; use std::cell::{Cell, RefCell}; @@ -47,7 +49,7 @@ use syntax_pos::{self, Span, Pos}; use syntax::ast; use syntax::symbol::{Symbol, InternedString}; use rustc::ty::layout::{self, LayoutOf, HasTyCtxt}; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; pub mod gdb; mod utils; @@ -57,8 +59,7 @@ pub mod metadata; mod create_scope_map; mod source_loc; -pub use self::create_scope_map::{create_mir_scopes, MirDebugScope}; -pub use self::source_loc::start_emitting_source_locations; +pub use self::create_scope_map::{create_mir_scopes}; pub use self::metadata::create_global_var_metadata; pub use self::metadata::extend_scope_to_file; pub use self::source_loc::set_source_location; @@ -542,12 +543,12 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { finalize(self) } - fn debuginfo_upvar_decls_ops_sequence(&self, byte_offset_of_var_in_env: u64) -> &[i64] { + fn debuginfo_upvar_decls_ops_sequence(&self, byte_offset_of_var_in_env: u64) -> [i64; 4] { unsafe { [llvm::LLVMRustDIBuilderCreateOpDeref(), llvm::LLVMRustDIBuilderCreateOpPlusUconst(), byte_offset_of_var_in_env as i64, llvm::LLVMRustDIBuilderCreateOpDeref()] - }; + } } } diff --git a/src/librustc_codegen_llvm/debuginfo/source_loc.rs b/src/librustc_codegen_llvm/debuginfo/source_loc.rs index a4fe912d1d79d..e4065b6ef36cd 100644 --- a/src/librustc_codegen_llvm/debuginfo/source_loc.rs +++ b/src/librustc_codegen_llvm/debuginfo/source_loc.rs @@ -12,12 +12,12 @@ use self::InternalDebugLocation::*; use super::utils::{debug_context, span_start}; use super::metadata::UNKNOWN_COLUMN_NUMBER; -use super::FunctionDebugContext; +use rustc_codegen_ssa::debuginfo::FunctionDebugContext; use llvm; use llvm::debuginfo::DIScope; use builder::Builder; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use libc::c_uint; use syntax_pos::{Span, Pos}; diff --git a/src/librustc_codegen_llvm/debuginfo/type_names.rs b/src/librustc_codegen_llvm/debuginfo/type_names.rs index 5fbeb2124ac37..d8fd8b7f7f470 100644 --- a/src/librustc_codegen_llvm/debuginfo/type_names.rs +++ b/src/librustc_codegen_llvm/debuginfo/type_names.rs @@ -14,7 +14,7 @@ use common::CodegenCx; use rustc::hir::def_id::DefId; use rustc::ty::subst::Substs; use rustc::ty::{self, Ty}; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use rustc::hir; diff --git a/src/librustc_codegen_llvm/debuginfo/utils.rs b/src/librustc_codegen_llvm/debuginfo/utils.rs index 2d1ec840882cd..ddd1a176957b4 100644 --- a/src/librustc_codegen_llvm/debuginfo/utils.rs +++ b/src/librustc_codegen_llvm/debuginfo/utils.rs @@ -19,7 +19,7 @@ use rustc::ty::DefIdTree; use llvm; use llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor, DIArray}; use common::{CodegenCx}; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use syntax_pos::{self, Span}; diff --git a/src/librustc_codegen_llvm/declare.rs b/src/librustc_codegen_llvm/declare.rs index b5c64adb427fd..135780048aedb 100644 --- a/src/librustc_codegen_llvm/declare.rs +++ b/src/librustc_codegen_llvm/declare.rs @@ -31,7 +31,7 @@ use abi::{Abi, FnType, FnTypeExt}; use attributes; use context::CodegenCx; use type_::Type; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use value::Value; /// Declare a function. diff --git a/src/librustc_codegen_llvm/intrinsic.rs b/src/librustc_codegen_llvm/intrinsic.rs index c7b36cc589180..86a41fb05d1d4 100644 --- a/src/librustc_codegen_llvm/intrinsic.rs +++ b/src/librustc_codegen_llvm/intrinsic.rs @@ -15,11 +15,12 @@ use intrinsics::{self, Intrinsic}; use llvm; use llvm_util; use abi::{Abi, FnType, LlvmType, PassMode}; -use mir::place::PlaceRef; -use mir::operand::{OperandRef, OperandValue}; -use base::*; +use rustc_codegen_ssa::MemFlags; +use rustc_codegen_ssa::mir::place::PlaceRef; +use rustc_codegen_ssa::mir::operand::{OperandRef, OperandValue}; +use rustc_codegen_ssa::glue; +use rustc_codegen_ssa::base::{to_immediate, wants_msvc_seh, compare_simd_types}; use context::CodegenCx; -use glue; use type_::Type; use type_of::LayoutLlvmExt; use rustc::ty::{self, Ty}; @@ -28,10 +29,10 @@ use rustc_codegen_ssa::common::TypeKind; use rustc::hir; use syntax::ast; use syntax::symbol::Symbol; -use builder::{Builder, MemFlags}; +use builder::Builder; use value::Value; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use rustc::session::Session; use syntax_pos::Span; diff --git a/src/librustc_codegen_llvm/lib.rs b/src/librustc_codegen_llvm/lib.rs index 41796d24d9ecf..560d266e92632 100644 --- a/src/librustc_codegen_llvm/lib.rs +++ b/src/librustc_codegen_llvm/lib.rs @@ -40,6 +40,7 @@ use back::write::create_target_machine; use syntax_pos::symbol::Symbol; extern crate flate2; +#[macro_use] extern crate bitflags; extern crate libc; #[macro_use] extern crate rustc; extern crate jobserver; @@ -66,7 +67,7 @@ extern crate cc; // Used to locate MSVC extern crate tempfile; extern crate memmap; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use time_graph::TimeGraph; use std::sync::mpsc::Receiver; use back::write::{self, OngoingCodegen}; @@ -76,22 +77,17 @@ use rustc::mir::mono::Stats; pub use llvm_util::target_features; use std::any::Any; use std::sync::mpsc; -use rustc_data_structures::sync::Lrc; use rustc::dep_graph::DepGraph; -use rustc::hir::def_id::CrateNum; use rustc::middle::allocator::AllocatorKind; use rustc::middle::cstore::{EncodedMetadata, MetadataLoader}; -use rustc::middle::cstore::{NativeLibrary, CrateSource, LibSource}; -use rustc::middle::lang_items::LangItem; use rustc::session::{Session, CompileIncomplete}; use rustc::session::config::{OutputFilenames, OutputType, PrintRequest}; use rustc::ty::{self, TyCtxt}; use rustc::util::time_graph; -use rustc::util::nodemap::{FxHashSet, FxHashMap}; use rustc::util::profiling::ProfileCategory; use rustc_mir::monomorphize; -use rustc_codegen_ssa::{interfaces, ModuleCodegen, CompiledModule}; +use rustc_codegen_ssa::{ModuleCodegen, CompiledModule, CachedModuleCodegen, CrateInfo}; use rustc_codegen_utils::codegen_backend::CodegenBackend; use rustc_data_structures::svh::Svh; @@ -157,7 +153,7 @@ impl BackendMethods for LlvmCodegenBackend { ) -> OngoingCodegen { write::start_async_codegen(tcx, time_graph, metadata, coordinator_receive, total_cgus) } - fn submit_pre_codegened_module_to_llvm( + fn submit_pre_codegened_module_to_backend( &self, codegen: &OngoingCodegen, tcx: TyCtxt, @@ -165,10 +161,10 @@ impl BackendMethods for LlvmCodegenBackend { ) { codegen.submit_pre_codegened_module_to_llvm(tcx, module) } - fn submit_pre_lto_module_to_llvm(&self, tcx: TyCtxt, module: CachedModuleCodegen) { + fn submit_pre_lto_module_to_backend(&self, tcx: TyCtxt, module: CachedModuleCodegen) { write::submit_pre_lto_module_to_llvm(tcx, module) } - fn submit_post_lto_module_to_llvm(&self, tcx: TyCtxt, module: CachedModuleCodegen) { + fn submit_post_lto_module_to_backend(&self, tcx: TyCtxt, module: CachedModuleCodegen) { write::submit_post_lto_module_to_llvm(tcx, module) } fn codegen_aborted(codegen: OngoingCodegen) { @@ -260,13 +256,13 @@ impl CodegenBackend for LlvmCodegenBackend { fn provide(&self, providers: &mut ty::query::Providers) { rustc_codegen_utils::symbol_export::provide(providers); rustc_codegen_utils::symbol_names::provide(providers); - base::provide_both(providers); + rustc_codegen_ssa::base::provide_both(providers); attributes::provide(providers); } fn provide_extern(&self, providers: &mut ty::query::Providers) { rustc_codegen_utils::symbol_export::provide_extern(providers); - base::provide_both(providers); + rustc_codegen_ssa::base::provide_both(providers); attributes::provide_extern(providers); } @@ -275,7 +271,7 @@ impl CodegenBackend for LlvmCodegenBackend { tcx: TyCtxt<'a, 'tcx, 'tcx>, rx: mpsc::Receiver> ) -> Box { - box base::codegen_crate(LlvmCodegenBackend(()), tcx, rx) + box rustc_codegen_ssa::base::codegen_crate(LlvmCodegenBackend(()), tcx, rx) } fn join_codegen_and_link( diff --git a/src/librustc_codegen_llvm/mono_item.rs b/src/librustc_codegen_llvm/mono_item.rs index 750e2ab074192..7111644ebb806 100644 --- a/src/librustc_codegen_llvm/mono_item.rs +++ b/src/librustc_codegen_llvm/mono_item.rs @@ -14,14 +14,11 @@ use context::CodegenCx; use llvm; use monomorphize::Instance; use type_of::LayoutLlvmExt; -use rustc::hir; -use rustc::hir::def::Def; use rustc::hir::def_id::{DefId, LOCAL_CRATE}; use rustc::mir::mono::{Linkage, Visibility}; use rustc::ty::TypeFoldable; use rustc::ty::layout::{LayoutOf, HasTyCtxt}; -use std::fmt; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; pub use rustc::mir::mono::MonoItem; diff --git a/src/librustc_codegen_llvm/type_.rs b/src/librustc_codegen_llvm/type_.rs index d21542a50fb53..e22177ce31d5b 100644 --- a/src/librustc_codegen_llvm/type_.rs +++ b/src/librustc_codegen_llvm/type_.rs @@ -15,7 +15,7 @@ pub use llvm::Type; use llvm; use llvm::{Bool, False, True}; use context::CodegenCx; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use value::Value; @@ -400,11 +400,11 @@ impl LayoutTypeMethods<'tcx> for CodegenCx<'ll, 'tcx> { fn is_backend_immediate(&self, layout: TyLayout<'tcx>) -> bool { layout.is_llvm_immediate() } - fn is_backend_scalar_pair(&self, ty: &TyLayout<'tcx>) -> bool { - ty.is_llvm_scalar_pair() + fn is_backend_scalar_pair(&self, layout: TyLayout<'tcx>) -> bool { + layout.is_llvm_scalar_pair() } - fn backend_field_index(&self, ty: &TyLayout<'tcx>, index: usize) -> u64 { - ty.llvm_field_index() + fn backend_field_index(&self, layout: TyLayout<'tcx>, index: usize) -> u64 { + layout.llvm_field_index(index) } fn scalar_pair_element_backend_type<'a>( &self, diff --git a/src/librustc_codegen_llvm/type_of.rs b/src/librustc_codegen_llvm/type_of.rs index de87b52243992..880da34137d21 100644 --- a/src/librustc_codegen_llvm/type_of.rs +++ b/src/librustc_codegen_llvm/type_of.rs @@ -16,7 +16,7 @@ use rustc::ty::layout::{self, Align, LayoutOf, Size, TyLayout}; use rustc_target::abi::FloatTy; use rustc_mir::monomorphize::item::DefPathBasedNames; use type_::Type; -use interfaces::*; +use rustc_codegen_ssa::interfaces::*; use std::fmt::Write; diff --git a/src/librustc_codegen_ssa/base.rs b/src/librustc_codegen_ssa/base.rs index de85bb543972a..71ad46ac9b3e0 100644 --- a/src/librustc_codegen_ssa/base.rs +++ b/src/librustc_codegen_ssa/base.rs @@ -463,7 +463,7 @@ pub fn codegen_instance<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>( /// Create the `main` function which will initialize the rust runtime and call /// users main function. -fn maybe_create_entry_wrapper<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>( +pub fn maybe_create_entry_wrapper<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>( cx: &'a Bx::CodegenCx ) { let (main_def_id, span) = match *cx.sess().entry_fn.borrow() { diff --git a/src/librustc_codegen_ssa/debuginfo.rs b/src/librustc_codegen_ssa/debuginfo.rs index 2891b1c22fe3b..0fc61422bb3a2 100644 --- a/src/librustc_codegen_ssa/debuginfo.rs +++ b/src/librustc_codegen_ssa/debuginfo.rs @@ -57,8 +57,8 @@ pub fn start_emitting_source_locations(dbg_context: &FunctionDebugContext) } pub struct FunctionDebugContextData { - fn_metadata: D, - source_locations_enabled: Cell, + pub fn_metadata: D, + pub source_locations_enabled: Cell, pub defining_crate: CrateNum, } diff --git a/src/librustc_codegen_ssa/interfaces/debuginfo.rs b/src/librustc_codegen_ssa/interfaces/debuginfo.rs index 784d69e93bfc8..aefc59609afb7 100644 --- a/src/librustc_codegen_ssa/interfaces/debuginfo.rs +++ b/src/librustc_codegen_ssa/interfaces/debuginfo.rs @@ -48,7 +48,7 @@ pub trait DebugInfoMethods<'tcx>: Backend<'tcx> { defining_crate: CrateNum, ) -> Self::DIScope; fn debuginfo_finalize(&self); - fn debuginfo_upvar_decls_ops_sequence(&self, byte_offset_of_var_in_env: u64) -> &[i64]; + fn debuginfo_upvar_decls_ops_sequence(&self, byte_offset_of_var_in_env: u64) -> [i64; 4]; } pub trait DebugInfoBuilderMethods<'tcx>: HasCodegen<'tcx> { diff --git a/src/librustc_codegen_ssa/lib.rs b/src/librustc_codegen_ssa/lib.rs index 9c4dfb0825ad5..818c96f9e91b6 100644 --- a/src/librustc_codegen_ssa/lib.rs +++ b/src/librustc_codegen_ssa/lib.rs @@ -141,22 +141,22 @@ bitflags! { } /// Misc info we load from metadata to persist beyond the tcx -struct CrateInfo { - panic_runtime: Option, - compiler_builtins: Option, - profiler_runtime: Option, - sanitizer_runtime: Option, - is_no_builtins: FxHashSet, - native_libraries: FxHashMap>>, - crate_name: FxHashMap, - used_libraries: Lrc>, - link_args: Lrc>, - used_crate_source: FxHashMap>, - used_crates_static: Vec<(CrateNum, LibSource)>, - used_crates_dynamic: Vec<(CrateNum, LibSource)>, - wasm_imports: FxHashMap, - lang_item_to_crate: FxHashMap, - missing_lang_items: FxHashMap>, +pub struct CrateInfo { + pub panic_runtime: Option, + pub compiler_builtins: Option, + pub profiler_runtime: Option, + pub sanitizer_runtime: Option, + pub is_no_builtins: FxHashSet, + pub native_libraries: FxHashMap>>, + pub crate_name: FxHashMap, + pub used_libraries: Lrc>, + pub link_args: Lrc>, + pub used_crate_source: FxHashMap>, + pub used_crates_static: Vec<(CrateNum, LibSource)>, + pub used_crates_dynamic: Vec<(CrateNum, LibSource)>, + pub wasm_imports: FxHashMap, + pub lang_item_to_crate: FxHashMap, + pub missing_lang_items: FxHashMap>, } __build_diagnostic_array! { librustc_codegen_ssa, DIAGNOSTICS }