Finished moving backend-agnostic code to rustc_codegen_ssa
This commit is contained in:
parent
c0a428ee70
commit
015e4441f5
28 changed files with 110 additions and 154 deletions
|
@ -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};
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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>,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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()]
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<dyn Any + Send>>
|
||||
) -> Box<dyn Any> {
|
||||
box base::codegen_crate(LlvmCodegenBackend(()), tcx, rx)
|
||||
box rustc_codegen_ssa::base::codegen_crate(LlvmCodegenBackend(()), tcx, rx)
|
||||
}
|
||||
|
||||
fn join_codegen_and_link(
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -57,8 +57,8 @@ pub fn start_emitting_source_locations<D>(dbg_context: &FunctionDebugContext<D>)
|
|||
}
|
||||
|
||||
pub struct FunctionDebugContextData<D> {
|
||||
fn_metadata: D,
|
||||
source_locations_enabled: Cell<bool>,
|
||||
pub fn_metadata: D,
|
||||
pub source_locations_enabled: Cell<bool>,
|
||||
pub defining_crate: CrateNum,
|
||||
}
|
||||
|
||||
|
|
|
@ -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> {
|
||||
|
|
|
@ -141,22 +141,22 @@ bitflags! {
|
|||
}
|
||||
|
||||
/// Misc info we load from metadata to persist beyond the tcx
|
||||
struct CrateInfo {
|
||||
panic_runtime: Option<CrateNum>,
|
||||
compiler_builtins: Option<CrateNum>,
|
||||
profiler_runtime: Option<CrateNum>,
|
||||
sanitizer_runtime: Option<CrateNum>,
|
||||
is_no_builtins: FxHashSet<CrateNum>,
|
||||
native_libraries: FxHashMap<CrateNum, Lrc<Vec<NativeLibrary>>>,
|
||||
crate_name: FxHashMap<CrateNum, String>,
|
||||
used_libraries: Lrc<Vec<NativeLibrary>>,
|
||||
link_args: Lrc<Vec<String>>,
|
||||
used_crate_source: FxHashMap<CrateNum, Lrc<CrateSource>>,
|
||||
used_crates_static: Vec<(CrateNum, LibSource)>,
|
||||
used_crates_dynamic: Vec<(CrateNum, LibSource)>,
|
||||
wasm_imports: FxHashMap<String, String>,
|
||||
lang_item_to_crate: FxHashMap<LangItem, CrateNum>,
|
||||
missing_lang_items: FxHashMap<CrateNum, Vec<LangItem>>,
|
||||
pub struct CrateInfo {
|
||||
pub panic_runtime: Option<CrateNum>,
|
||||
pub compiler_builtins: Option<CrateNum>,
|
||||
pub profiler_runtime: Option<CrateNum>,
|
||||
pub sanitizer_runtime: Option<CrateNum>,
|
||||
pub is_no_builtins: FxHashSet<CrateNum>,
|
||||
pub native_libraries: FxHashMap<CrateNum, Lrc<Vec<NativeLibrary>>>,
|
||||
pub crate_name: FxHashMap<CrateNum, String>,
|
||||
pub used_libraries: Lrc<Vec<NativeLibrary>>,
|
||||
pub link_args: Lrc<Vec<String>>,
|
||||
pub used_crate_source: FxHashMap<CrateNum, Lrc<CrateSource>>,
|
||||
pub used_crates_static: Vec<(CrateNum, LibSource)>,
|
||||
pub used_crates_dynamic: Vec<(CrateNum, LibSource)>,
|
||||
pub wasm_imports: FxHashMap<String, String>,
|
||||
pub lang_item_to_crate: FxHashMap<LangItem, CrateNum>,
|
||||
pub missing_lang_items: FxHashMap<CrateNum, Vec<LangItem>>,
|
||||
}
|
||||
|
||||
__build_diagnostic_array! { librustc_codegen_ssa, DIAGNOSTICS }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue