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.
|
// except according to those terms.
|
||||||
|
|
||||||
use llvm::{self, AttributePlace};
|
use llvm::{self, AttributePlace};
|
||||||
use builder::{Builder, MemFlags};
|
use rustc_codegen_ssa::MemFlags;
|
||||||
|
use builder::Builder;
|
||||||
use context::CodegenCx;
|
use context::CodegenCx;
|
||||||
use mir::place::PlaceRef;
|
use rustc_codegen_ssa::mir::place::PlaceRef;
|
||||||
use mir::operand::OperandValue;
|
use rustc_codegen_ssa::mir::operand::OperandValue;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use type_of::{LayoutLlvmExt, PointerKind};
|
use type_of::{LayoutLlvmExt, PointerKind};
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use rustc_target::abi::call::ArgType;
|
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_target::abi::{HasDataLayout, LayoutOf, Size, TyLayout, Abi as LayoutAbi};
|
||||||
use rustc::ty::{self, Ty, Instance};
|
use rustc::ty::{self, Ty, Instance};
|
||||||
|
|
|
@ -15,10 +15,10 @@ use builder::Builder;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use rustc::hir;
|
use rustc::hir;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use mir::place::PlaceRef;
|
use rustc_codegen_ssa::mir::place::PlaceRef;
|
||||||
use mir::operand::OperandValue;
|
use rustc_codegen_ssa::mir::operand::OperandValue;
|
||||||
|
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
use libc::{c_uint, c_char};
|
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::sync::Lrc;
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
use rustc_target::spec::PanicStrategy;
|
use rustc_target::spec::PanicStrategy;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use attributes;
|
use attributes;
|
||||||
use llvm::{self, Attribute};
|
use llvm::{self, Attribute};
|
||||||
|
|
|
@ -22,7 +22,8 @@ use rustc::session::search_paths::PathKind;
|
||||||
use rustc::session::Session;
|
use rustc::session::Session;
|
||||||
use rustc::middle::cstore::{NativeLibrary, LibSource, NativeLibraryKind};
|
use rustc::middle::cstore::{NativeLibrary, LibSource, NativeLibraryKind};
|
||||||
use rustc::middle::dependency_format::Linkage;
|
use rustc::middle::dependency_format::Linkage;
|
||||||
use {CodegenResults, CrateInfo};
|
use rustc_codegen_ssa::CrateInfo;
|
||||||
|
use CodegenResults;
|
||||||
use rustc::util::common::time;
|
use rustc::util::common::time;
|
||||||
use rustc_fs_util::fix_windows_verbatim_for_gcc;
|
use rustc_fs_util::fix_windows_verbatim_for_gcc;
|
||||||
use rustc::hir::def_id::CrateNum;
|
use rustc::hir::def_id::CrateNum;
|
||||||
|
|
|
@ -27,8 +27,7 @@ use time_graph::{self, TimeGraph, Timeline};
|
||||||
use llvm::{self, DiagnosticInfo, PassManager, SMDiagnostic};
|
use llvm::{self, DiagnosticInfo, PassManager, SMDiagnostic};
|
||||||
use llvm_util;
|
use llvm_util;
|
||||||
use {CodegenResults, ModuleLlvm};
|
use {CodegenResults, ModuleLlvm};
|
||||||
use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen, CompiledModule};
|
use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen, CompiledModule, CrateInfo};
|
||||||
use CrateInfo;
|
|
||||||
use rustc::hir::def_id::{CrateNum, LOCAL_CRATE};
|
use rustc::hir::def_id::{CrateNum, LOCAL_CRATE};
|
||||||
use rustc::ty::TyCtxt;
|
use rustc::ty::TyCtxt;
|
||||||
use rustc::util::common::{time_ext, time_depth, set_time_depth, print_time_passes_entry};
|
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.
|
//! int) and rec(x=int, y=int, z=int) will have the same llvm::Type.
|
||||||
|
|
||||||
use super::ModuleLlvm;
|
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 super::LlvmCodegenBackend;
|
||||||
|
|
||||||
use abi;
|
|
||||||
use back::write;
|
use back::write;
|
||||||
use llvm;
|
use llvm;
|
||||||
use metadata;
|
use metadata;
|
||||||
use rustc::dep_graph::cgu_reuse_tracker::CguReuse;
|
use rustc::mir::mono::{Linkage, Visibility, Stats};
|
||||||
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::middle::cstore::{EncodedMetadata};
|
use rustc::middle::cstore::{EncodedMetadata};
|
||||||
use rustc::ty::{self, Ty, TyCtxt};
|
use rustc::ty::TyCtxt;
|
||||||
use rustc::ty::layout::{self, Align, TyLayout, LayoutOf, HasTyCtxt};
|
|
||||||
use rustc::ty::query::Providers;
|
|
||||||
use rustc::middle::cstore::{self, LinkagePreference};
|
|
||||||
use rustc::middle::exported_symbols;
|
use rustc::middle::exported_symbols;
|
||||||
use rustc::util::common::{time, print_time_passes_entry};
|
use rustc::session::config::{self, DebugInfo};
|
||||||
use rustc::util::profiling::ProfileCategory;
|
use builder::Builder;
|
||||||
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 common;
|
use common;
|
||||||
use rustc_codegen_ssa::common::{RealPredicate, TypeKind, IntPredicate};
|
|
||||||
use meth;
|
|
||||||
use mir;
|
|
||||||
use context::CodegenCx;
|
use context::CodegenCx;
|
||||||
use monomorphize::Instance;
|
use monomorphize::partitioning::CodegenUnitExt;
|
||||||
use monomorphize::partitioning::{CodegenUnit, CodegenUnitExt};
|
use rustc_codegen_ssa::mono_item::MonoItemExt;
|
||||||
use rustc_codegen_utils::symbol_names_test;
|
|
||||||
use time_graph;
|
|
||||||
use mono_item::{MonoItem, MonoItemExt};
|
|
||||||
|
|
||||||
use rustc::util::nodemap::FxHashMap;
|
|
||||||
use CrateInfo;
|
|
||||||
use rustc_data_structures::small_c_str::SmallCStr;
|
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::ffi::CString;
|
||||||
use std::marker;
|
use std::time::Instant;
|
||||||
use std::ops::{Deref, DerefMut};
|
|
||||||
use std::sync::mpsc;
|
|
||||||
use std::time::{Instant, Duration};
|
|
||||||
use syntax_pos::Span;
|
|
||||||
use syntax_pos::symbol::InternedString;
|
use syntax_pos::symbol::InternedString;
|
||||||
use syntax::attr;
|
use rustc::hir::CodegenFnAttrs;
|
||||||
use rustc::hir::{self, CodegenFnAttrs};
|
|
||||||
|
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use mir::operand::OperandValue;
|
|
||||||
|
|
||||||
use rustc_codegen_utils::check_for_rustc_errors_attr;
|
|
||||||
|
|
||||||
pub(crate) fn write_metadata<'a, 'gcx>(
|
pub(crate) fn write_metadata<'a, 'gcx>(
|
||||||
tcx: TyCtxt<'a, 'gcx, 'gcx>,
|
tcx: TyCtxt<'a, 'gcx, 'gcx>,
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect};
|
use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect};
|
||||||
use llvm::{self, False, BasicBlock};
|
use llvm::{self, False, BasicBlock};
|
||||||
use rustc_codegen_ssa::common::{IntPredicate, TypeKind, RealPredicate};
|
use rustc_codegen_ssa::common::{IntPredicate, TypeKind, RealPredicate};
|
||||||
use rustc_codegen_ssa;
|
use rustc_codegen_ssa::{self, MemFlags};
|
||||||
use common::Funclet;
|
use common::Funclet;
|
||||||
use context::CodegenCx;
|
use context::CodegenCx;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
|
@ -22,11 +22,11 @@ use rustc::ty::{self, Ty, TyCtxt};
|
||||||
use rustc::ty::layout::{self, Align, Size, TyLayout};
|
use rustc::ty::layout::{self, Align, Size, TyLayout};
|
||||||
use rustc::session::config;
|
use rustc::session::config;
|
||||||
use rustc_data_structures::small_c_str::SmallCStr;
|
use rustc_data_structures::small_c_str::SmallCStr;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
use syntax;
|
use syntax;
|
||||||
use base;
|
use rustc_codegen_ssa::base::to_immediate;
|
||||||
use mir::operand::{OperandValue, OperandRef};
|
use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef};
|
||||||
use mir::place::PlaceRef;
|
use rustc_codegen_ssa::mir::place::PlaceRef;
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::ops::Range;
|
use std::ops::Range;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
@ -582,7 +582,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
|
||||||
}
|
}
|
||||||
load
|
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 {
|
} else if let layout::Abi::ScalarPair(ref a, ref b) = place.layout.abi {
|
||||||
let load = |i, scalar: &layout::Scalar| {
|
let load = |i, scalar: &layout::Scalar| {
|
||||||
let llptr = self.struct_gep(place.llval, i as u64);
|
let llptr = self.struct_gep(place.llval, i as u64);
|
||||||
|
|
|
@ -19,12 +19,10 @@ use llvm;
|
||||||
use monomorphize::Instance;
|
use monomorphize::Instance;
|
||||||
use context::CodegenCx;
|
use context::CodegenCx;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use rustc::hir::def_id::DefId;
|
use rustc::ty::TypeFoldable;
|
||||||
use rustc::ty::{self, TypeFoldable};
|
|
||||||
use rustc::ty::layout::{LayoutOf, HasTyCtxt};
|
use rustc::ty::layout::{LayoutOf, HasTyCtxt};
|
||||||
use rustc::ty::subst::Substs;
|
|
||||||
|
|
||||||
/// Codegens a reference to a fn/method item, monomorphizing and
|
/// Codegens a reference to a fn/method item, monomorphizing and
|
||||||
/// inlining as it goes.
|
/// inlining as it goes.
|
||||||
|
|
|
@ -13,29 +13,22 @@
|
||||||
//! Code that is useful in various codegen modules.
|
//! Code that is useful in various codegen modules.
|
||||||
|
|
||||||
use llvm::{self, True, False, Bool, BasicBlock, OperandBundleDef};
|
use llvm::{self, True, False, Bool, BasicBlock, OperandBundleDef};
|
||||||
use rustc::hir::def_id::DefId;
|
|
||||||
use rustc::middle::lang_items::LangItem;
|
|
||||||
use abi;
|
use abi;
|
||||||
use base;
|
|
||||||
use consts;
|
use consts;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use type_of::LayoutLlvmExt;
|
use type_of::LayoutLlvmExt;
|
||||||
use value::Value;
|
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::ty::layout::{HasDataLayout, LayoutOf, self, TyLayout, Size};
|
||||||
use rustc::mir::interpret::{Scalar, AllocType, Allocation};
|
use rustc::mir::interpret::{Scalar, AllocType, Allocation};
|
||||||
use rustc::hir;
|
use consts::const_alloc_to_llvm;
|
||||||
use mir::constant::const_alloc_to_llvm;
|
use rustc_codegen_ssa::mir::place::PlaceRef;
|
||||||
use mir::place::PlaceRef;
|
|
||||||
use rustc_codegen_ssa::common::TypeKind;
|
|
||||||
|
|
||||||
use libc::{c_uint, c_char};
|
use libc::{c_uint, c_char};
|
||||||
|
|
||||||
use syntax::symbol::LocalInternedString;
|
use syntax::symbol::LocalInternedString;
|
||||||
use syntax::ast::Mutability;
|
use syntax::ast::Mutability;
|
||||||
use syntax_pos::Span;
|
|
||||||
|
|
||||||
pub use context::CodegenCx;
|
pub use context::CodegenCx;
|
||||||
|
|
||||||
|
|
|
@ -11,21 +11,24 @@
|
||||||
use libc::c_uint;
|
use libc::c_uint;
|
||||||
use llvm::{self, SetUnnamedAddr, True};
|
use llvm::{self, SetUnnamedAddr, True};
|
||||||
use rustc::hir::def_id::DefId;
|
use rustc::hir::def_id::DefId;
|
||||||
|
use rustc::mir::interpret::{ConstValue, Allocation, read_target_uint,
|
||||||
|
Pointer, ErrorHandled, GlobalId};
|
||||||
use rustc::hir::Node;
|
use rustc::hir::Node;
|
||||||
use debuginfo;
|
use debuginfo;
|
||||||
use base;
|
|
||||||
use monomorphize::MonoItem;
|
use monomorphize::MonoItem;
|
||||||
use common::CodegenCx;
|
use common::CodegenCx;
|
||||||
use monomorphize::Instance;
|
use monomorphize::Instance;
|
||||||
use syntax_pos::Span;
|
use syntax_pos::Span;
|
||||||
|
use rustc_target::abi::HasDataLayout;
|
||||||
use syntax_pos::symbol::LocalInternedString;
|
use syntax_pos::symbol::LocalInternedString;
|
||||||
|
use base;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use type_of::LayoutLlvmExt;
|
use type_of::LayoutLlvmExt;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use rustc::ty::{self, Ty};
|
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};
|
use rustc::hir::{self, CodegenFnAttrs, CodegenFnAttrFlags};
|
||||||
|
|
||||||
|
@ -360,7 +363,7 @@ impl StaticMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let attrs = self.tcx.codegen_fn_attrs(def_id);
|
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,
|
Ok(v) => v,
|
||||||
// Error has already been reported
|
// Error has already been reported
|
||||||
Err(_) => return,
|
Err(_) => return,
|
||||||
|
|
|
@ -14,15 +14,13 @@ use llvm_util;
|
||||||
use rustc::dep_graph::DepGraphSafe;
|
use rustc::dep_graph::DepGraphSafe;
|
||||||
use rustc::hir;
|
use rustc::hir;
|
||||||
use debuginfo;
|
use debuginfo;
|
||||||
use callee;
|
|
||||||
use base;
|
|
||||||
use monomorphize::Instance;
|
use monomorphize::Instance;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use monomorphize::partitioning::CodegenUnit;
|
use monomorphize::partitioning::CodegenUnit;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use type_of::PointeeInfo;
|
use type_of::PointeeInfo;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
use libc::c_uint;
|
use libc::c_uint;
|
||||||
|
|
||||||
use rustc_data_structures::base_n;
|
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::ty::{self, Ty, TyCtxt};
|
||||||
use rustc::util::nodemap::FxHashMap;
|
use rustc::util::nodemap::FxHashMap;
|
||||||
use rustc_target::spec::{HasTargetSpec, Target};
|
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::ffi::CStr;
|
||||||
use std::cell::{Cell, RefCell};
|
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 {
|
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 {
|
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 tcx = self.tcx;
|
||||||
let llfn = match tcx.lang_items().eh_personality() {
|
let llfn = match tcx.lang_items().eh_personality() {
|
||||||
Some(def_id) if !base::wants_msvc_seh(self.sess()) => {
|
Some(def_id) if !wants_msvc_seh(self.sess()) => {
|
||||||
callee::resolve_and_get_fn(self, def_id, tcx.intern_substs(&[]))
|
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"
|
"__CxxFrameHandler3"
|
||||||
} else {
|
} else {
|
||||||
"rust_eh_personality"
|
"rust_eh_personality"
|
||||||
|
@ -390,7 +391,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||||
let tcx = self.tcx;
|
let tcx = self.tcx;
|
||||||
assert!(self.sess().target.target.options.custom_unwind_resume);
|
assert!(self.sess().target.target.options.custom_unwind_resume);
|
||||||
if let Some(def_id) = tcx.lang_items().eh_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));
|
unwresume.set(Some(llfn));
|
||||||
return llfn;
|
return llfn;
|
||||||
}
|
}
|
||||||
|
@ -446,7 +447,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||||
attributes::apply_target_cpu_attr(self, llfn)
|
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
|
llvm_util::get_major_version() < 6
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use super::{FunctionDebugContext, FunctionDebugContextData};
|
use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, FunctionDebugContextData, MirDebugScope};
|
||||||
use super::metadata::file_metadata;
|
use super::metadata::file_metadata;
|
||||||
use super::utils::{DIB, span_start};
|
use super::utils::{DIB, span_start};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ use common::CodegenCx;
|
||||||
use builder::Builder;
|
use builder::Builder;
|
||||||
use rustc::session::config::DebugInfo;
|
use rustc::session::config::DebugInfo;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use syntax::attr;
|
use syntax::attr;
|
||||||
|
|
||||||
|
|
|
@ -17,9 +17,8 @@ use super::utils::{debug_context, DIB, span_start,
|
||||||
use super::namespace::mangled_name_of_instance;
|
use super::namespace::mangled_name_of_instance;
|
||||||
use super::type_names::compute_debuginfo_type_name;
|
use super::type_names::compute_debuginfo_type_name;
|
||||||
use super::{CrateDebugContext};
|
use super::{CrateDebugContext};
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
use abi;
|
use abi;
|
||||||
use interfaces::ConstMethods;
|
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use llvm;
|
use llvm;
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
// See doc.rs for documentation.
|
// See doc.rs for documentation.
|
||||||
mod doc;
|
mod doc;
|
||||||
|
|
||||||
use self::VariableAccess::*;
|
use rustc_codegen_ssa::debuginfo::VariableAccess::*;
|
||||||
use self::VariableKind::*;
|
use rustc_codegen_ssa::debuginfo::VariableKind::*;
|
||||||
|
|
||||||
use self::utils::{DIB, span_start, create_DIArray, is_node_local_to_unit};
|
use self::utils::{DIB, span_start, create_DIArray, is_node_local_to_unit};
|
||||||
use self::namespace::mangled_name_of_instance;
|
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::small_c_str::SmallCStr;
|
||||||
use rustc_data_structures::indexed_vec::IndexVec;
|
use rustc_data_structures::indexed_vec::IndexVec;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, MirDebugScope, VariableAccess,
|
||||||
|
VariableKind, FunctionDebugContextData};
|
||||||
|
|
||||||
use libc::c_uint;
|
use libc::c_uint;
|
||||||
use std::cell::{Cell, RefCell};
|
use std::cell::{Cell, RefCell};
|
||||||
|
@ -47,7 +49,7 @@ use syntax_pos::{self, Span, Pos};
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::symbol::{Symbol, InternedString};
|
use syntax::symbol::{Symbol, InternedString};
|
||||||
use rustc::ty::layout::{self, LayoutOf, HasTyCtxt};
|
use rustc::ty::layout::{self, LayoutOf, HasTyCtxt};
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
pub mod gdb;
|
pub mod gdb;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
@ -57,8 +59,7 @@ pub mod metadata;
|
||||||
mod create_scope_map;
|
mod create_scope_map;
|
||||||
mod source_loc;
|
mod source_loc;
|
||||||
|
|
||||||
pub use self::create_scope_map::{create_mir_scopes, MirDebugScope};
|
pub use self::create_scope_map::{create_mir_scopes};
|
||||||
pub use self::source_loc::start_emitting_source_locations;
|
|
||||||
pub use self::metadata::create_global_var_metadata;
|
pub use self::metadata::create_global_var_metadata;
|
||||||
pub use self::metadata::extend_scope_to_file;
|
pub use self::metadata::extend_scope_to_file;
|
||||||
pub use self::source_loc::set_source_location;
|
pub use self::source_loc::set_source_location;
|
||||||
|
@ -542,12 +543,12 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||||
finalize(self)
|
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 {
|
unsafe {
|
||||||
[llvm::LLVMRustDIBuilderCreateOpDeref(),
|
[llvm::LLVMRustDIBuilderCreateOpDeref(),
|
||||||
llvm::LLVMRustDIBuilderCreateOpPlusUconst(),
|
llvm::LLVMRustDIBuilderCreateOpPlusUconst(),
|
||||||
byte_offset_of_var_in_env as i64,
|
byte_offset_of_var_in_env as i64,
|
||||||
llvm::LLVMRustDIBuilderCreateOpDeref()]
|
llvm::LLVMRustDIBuilderCreateOpDeref()]
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,12 +12,12 @@ use self::InternalDebugLocation::*;
|
||||||
|
|
||||||
use super::utils::{debug_context, span_start};
|
use super::utils::{debug_context, span_start};
|
||||||
use super::metadata::UNKNOWN_COLUMN_NUMBER;
|
use super::metadata::UNKNOWN_COLUMN_NUMBER;
|
||||||
use super::FunctionDebugContext;
|
use rustc_codegen_ssa::debuginfo::FunctionDebugContext;
|
||||||
|
|
||||||
use llvm;
|
use llvm;
|
||||||
use llvm::debuginfo::DIScope;
|
use llvm::debuginfo::DIScope;
|
||||||
use builder::Builder;
|
use builder::Builder;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use libc::c_uint;
|
use libc::c_uint;
|
||||||
use syntax_pos::{Span, Pos};
|
use syntax_pos::{Span, Pos};
|
||||||
|
|
|
@ -14,7 +14,7 @@ use common::CodegenCx;
|
||||||
use rustc::hir::def_id::DefId;
|
use rustc::hir::def_id::DefId;
|
||||||
use rustc::ty::subst::Substs;
|
use rustc::ty::subst::Substs;
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use rustc::hir;
|
use rustc::hir;
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ use rustc::ty::DefIdTree;
|
||||||
use llvm;
|
use llvm;
|
||||||
use llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor, DIArray};
|
use llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor, DIArray};
|
||||||
use common::{CodegenCx};
|
use common::{CodegenCx};
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use syntax_pos::{self, Span};
|
use syntax_pos::{self, Span};
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ use abi::{Abi, FnType, FnTypeExt};
|
||||||
use attributes;
|
use attributes;
|
||||||
use context::CodegenCx;
|
use context::CodegenCx;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
/// Declare a function.
|
/// Declare a function.
|
||||||
|
|
|
@ -15,11 +15,12 @@ use intrinsics::{self, Intrinsic};
|
||||||
use llvm;
|
use llvm;
|
||||||
use llvm_util;
|
use llvm_util;
|
||||||
use abi::{Abi, FnType, LlvmType, PassMode};
|
use abi::{Abi, FnType, LlvmType, PassMode};
|
||||||
use mir::place::PlaceRef;
|
use rustc_codegen_ssa::MemFlags;
|
||||||
use mir::operand::{OperandRef, OperandValue};
|
use rustc_codegen_ssa::mir::place::PlaceRef;
|
||||||
use base::*;
|
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 context::CodegenCx;
|
||||||
use glue;
|
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use type_of::LayoutLlvmExt;
|
use type_of::LayoutLlvmExt;
|
||||||
use rustc::ty::{self, Ty};
|
use rustc::ty::{self, Ty};
|
||||||
|
@ -28,10 +29,10 @@ use rustc_codegen_ssa::common::TypeKind;
|
||||||
use rustc::hir;
|
use rustc::hir;
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
use syntax::symbol::Symbol;
|
use syntax::symbol::Symbol;
|
||||||
use builder::{Builder, MemFlags};
|
use builder::Builder;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use rustc::session::Session;
|
use rustc::session::Session;
|
||||||
use syntax_pos::Span;
|
use syntax_pos::Span;
|
||||||
|
|
|
@ -40,6 +40,7 @@ use back::write::create_target_machine;
|
||||||
use syntax_pos::symbol::Symbol;
|
use syntax_pos::symbol::Symbol;
|
||||||
|
|
||||||
extern crate flate2;
|
extern crate flate2;
|
||||||
|
#[macro_use] extern crate bitflags;
|
||||||
extern crate libc;
|
extern crate libc;
|
||||||
#[macro_use] extern crate rustc;
|
#[macro_use] extern crate rustc;
|
||||||
extern crate jobserver;
|
extern crate jobserver;
|
||||||
|
@ -66,7 +67,7 @@ extern crate cc; // Used to locate MSVC
|
||||||
extern crate tempfile;
|
extern crate tempfile;
|
||||||
extern crate memmap;
|
extern crate memmap;
|
||||||
|
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
use time_graph::TimeGraph;
|
use time_graph::TimeGraph;
|
||||||
use std::sync::mpsc::Receiver;
|
use std::sync::mpsc::Receiver;
|
||||||
use back::write::{self, OngoingCodegen};
|
use back::write::{self, OngoingCodegen};
|
||||||
|
@ -76,22 +77,17 @@ use rustc::mir::mono::Stats;
|
||||||
pub use llvm_util::target_features;
|
pub use llvm_util::target_features;
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::sync::mpsc;
|
use std::sync::mpsc;
|
||||||
use rustc_data_structures::sync::Lrc;
|
|
||||||
|
|
||||||
use rustc::dep_graph::DepGraph;
|
use rustc::dep_graph::DepGraph;
|
||||||
use rustc::hir::def_id::CrateNum;
|
|
||||||
use rustc::middle::allocator::AllocatorKind;
|
use rustc::middle::allocator::AllocatorKind;
|
||||||
use rustc::middle::cstore::{EncodedMetadata, MetadataLoader};
|
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::{Session, CompileIncomplete};
|
||||||
use rustc::session::config::{OutputFilenames, OutputType, PrintRequest};
|
use rustc::session::config::{OutputFilenames, OutputType, PrintRequest};
|
||||||
use rustc::ty::{self, TyCtxt};
|
use rustc::ty::{self, TyCtxt};
|
||||||
use rustc::util::time_graph;
|
use rustc::util::time_graph;
|
||||||
use rustc::util::nodemap::{FxHashSet, FxHashMap};
|
|
||||||
use rustc::util::profiling::ProfileCategory;
|
use rustc::util::profiling::ProfileCategory;
|
||||||
use rustc_mir::monomorphize;
|
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_codegen_utils::codegen_backend::CodegenBackend;
|
||||||
use rustc_data_structures::svh::Svh;
|
use rustc_data_structures::svh::Svh;
|
||||||
|
|
||||||
|
@ -157,7 +153,7 @@ impl BackendMethods for LlvmCodegenBackend {
|
||||||
) -> OngoingCodegen {
|
) -> OngoingCodegen {
|
||||||
write::start_async_codegen(tcx, time_graph, metadata, coordinator_receive, total_cgus)
|
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,
|
&self,
|
||||||
codegen: &OngoingCodegen,
|
codegen: &OngoingCodegen,
|
||||||
tcx: TyCtxt,
|
tcx: TyCtxt,
|
||||||
|
@ -165,10 +161,10 @@ impl BackendMethods for LlvmCodegenBackend {
|
||||||
) {
|
) {
|
||||||
codegen.submit_pre_codegened_module_to_llvm(tcx, module)
|
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)
|
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)
|
write::submit_post_lto_module_to_llvm(tcx, module)
|
||||||
}
|
}
|
||||||
fn codegen_aborted(codegen: OngoingCodegen) {
|
fn codegen_aborted(codegen: OngoingCodegen) {
|
||||||
|
@ -260,13 +256,13 @@ impl CodegenBackend for LlvmCodegenBackend {
|
||||||
fn provide(&self, providers: &mut ty::query::Providers) {
|
fn provide(&self, providers: &mut ty::query::Providers) {
|
||||||
rustc_codegen_utils::symbol_export::provide(providers);
|
rustc_codegen_utils::symbol_export::provide(providers);
|
||||||
rustc_codegen_utils::symbol_names::provide(providers);
|
rustc_codegen_utils::symbol_names::provide(providers);
|
||||||
base::provide_both(providers);
|
rustc_codegen_ssa::base::provide_both(providers);
|
||||||
attributes::provide(providers);
|
attributes::provide(providers);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn provide_extern(&self, providers: &mut ty::query::Providers) {
|
fn provide_extern(&self, providers: &mut ty::query::Providers) {
|
||||||
rustc_codegen_utils::symbol_export::provide_extern(providers);
|
rustc_codegen_utils::symbol_export::provide_extern(providers);
|
||||||
base::provide_both(providers);
|
rustc_codegen_ssa::base::provide_both(providers);
|
||||||
attributes::provide_extern(providers);
|
attributes::provide_extern(providers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,7 +271,7 @@ impl CodegenBackend for LlvmCodegenBackend {
|
||||||
tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
||||||
rx: mpsc::Receiver<Box<dyn Any + Send>>
|
rx: mpsc::Receiver<Box<dyn Any + Send>>
|
||||||
) -> Box<dyn Any> {
|
) -> 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(
|
fn join_codegen_and_link(
|
||||||
|
|
|
@ -14,14 +14,11 @@ use context::CodegenCx;
|
||||||
use llvm;
|
use llvm;
|
||||||
use monomorphize::Instance;
|
use monomorphize::Instance;
|
||||||
use type_of::LayoutLlvmExt;
|
use type_of::LayoutLlvmExt;
|
||||||
use rustc::hir;
|
|
||||||
use rustc::hir::def::Def;
|
|
||||||
use rustc::hir::def_id::{DefId, LOCAL_CRATE};
|
use rustc::hir::def_id::{DefId, LOCAL_CRATE};
|
||||||
use rustc::mir::mono::{Linkage, Visibility};
|
use rustc::mir::mono::{Linkage, Visibility};
|
||||||
use rustc::ty::TypeFoldable;
|
use rustc::ty::TypeFoldable;
|
||||||
use rustc::ty::layout::{LayoutOf, HasTyCtxt};
|
use rustc::ty::layout::{LayoutOf, HasTyCtxt};
|
||||||
use std::fmt;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
use interfaces::*;
|
|
||||||
|
|
||||||
pub use rustc::mir::mono::MonoItem;
|
pub use rustc::mir::mono::MonoItem;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ pub use llvm::Type;
|
||||||
use llvm;
|
use llvm;
|
||||||
use llvm::{Bool, False, True};
|
use llvm::{Bool, False, True};
|
||||||
use context::CodegenCx;
|
use context::CodegenCx;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
use value::Value;
|
use value::Value;
|
||||||
|
|
||||||
|
|
||||||
|
@ -400,11 +400,11 @@ impl LayoutTypeMethods<'tcx> for CodegenCx<'ll, 'tcx> {
|
||||||
fn is_backend_immediate(&self, layout: TyLayout<'tcx>) -> bool {
|
fn is_backend_immediate(&self, layout: TyLayout<'tcx>) -> bool {
|
||||||
layout.is_llvm_immediate()
|
layout.is_llvm_immediate()
|
||||||
}
|
}
|
||||||
fn is_backend_scalar_pair(&self, ty: &TyLayout<'tcx>) -> bool {
|
fn is_backend_scalar_pair(&self, layout: TyLayout<'tcx>) -> bool {
|
||||||
ty.is_llvm_scalar_pair()
|
layout.is_llvm_scalar_pair()
|
||||||
}
|
}
|
||||||
fn backend_field_index(&self, ty: &TyLayout<'tcx>, index: usize) -> u64 {
|
fn backend_field_index(&self, layout: TyLayout<'tcx>, index: usize) -> u64 {
|
||||||
ty.llvm_field_index()
|
layout.llvm_field_index(index)
|
||||||
}
|
}
|
||||||
fn scalar_pair_element_backend_type<'a>(
|
fn scalar_pair_element_backend_type<'a>(
|
||||||
&self,
|
&self,
|
||||||
|
|
|
@ -16,7 +16,7 @@ use rustc::ty::layout::{self, Align, LayoutOf, Size, TyLayout};
|
||||||
use rustc_target::abi::FloatTy;
|
use rustc_target::abi::FloatTy;
|
||||||
use rustc_mir::monomorphize::item::DefPathBasedNames;
|
use rustc_mir::monomorphize::item::DefPathBasedNames;
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
use interfaces::*;
|
use rustc_codegen_ssa::interfaces::*;
|
||||||
|
|
||||||
use std::fmt::Write;
|
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
|
/// Create the `main` function which will initialize the rust runtime and call
|
||||||
/// users main function.
|
/// 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
|
cx: &'a Bx::CodegenCx
|
||||||
) {
|
) {
|
||||||
let (main_def_id, span) = match *cx.sess().entry_fn.borrow() {
|
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> {
|
pub struct FunctionDebugContextData<D> {
|
||||||
fn_metadata: D,
|
pub fn_metadata: D,
|
||||||
source_locations_enabled: Cell<bool>,
|
pub source_locations_enabled: Cell<bool>,
|
||||||
pub defining_crate: CrateNum,
|
pub defining_crate: CrateNum,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ pub trait DebugInfoMethods<'tcx>: Backend<'tcx> {
|
||||||
defining_crate: CrateNum,
|
defining_crate: CrateNum,
|
||||||
) -> Self::DIScope;
|
) -> Self::DIScope;
|
||||||
fn debuginfo_finalize(&self);
|
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> {
|
pub trait DebugInfoBuilderMethods<'tcx>: HasCodegen<'tcx> {
|
||||||
|
|
|
@ -141,22 +141,22 @@ bitflags! {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Misc info we load from metadata to persist beyond the tcx
|
/// Misc info we load from metadata to persist beyond the tcx
|
||||||
struct CrateInfo {
|
pub struct CrateInfo {
|
||||||
panic_runtime: Option<CrateNum>,
|
pub panic_runtime: Option<CrateNum>,
|
||||||
compiler_builtins: Option<CrateNum>,
|
pub compiler_builtins: Option<CrateNum>,
|
||||||
profiler_runtime: Option<CrateNum>,
|
pub profiler_runtime: Option<CrateNum>,
|
||||||
sanitizer_runtime: Option<CrateNum>,
|
pub sanitizer_runtime: Option<CrateNum>,
|
||||||
is_no_builtins: FxHashSet<CrateNum>,
|
pub is_no_builtins: FxHashSet<CrateNum>,
|
||||||
native_libraries: FxHashMap<CrateNum, Lrc<Vec<NativeLibrary>>>,
|
pub native_libraries: FxHashMap<CrateNum, Lrc<Vec<NativeLibrary>>>,
|
||||||
crate_name: FxHashMap<CrateNum, String>,
|
pub crate_name: FxHashMap<CrateNum, String>,
|
||||||
used_libraries: Lrc<Vec<NativeLibrary>>,
|
pub used_libraries: Lrc<Vec<NativeLibrary>>,
|
||||||
link_args: Lrc<Vec<String>>,
|
pub link_args: Lrc<Vec<String>>,
|
||||||
used_crate_source: FxHashMap<CrateNum, Lrc<CrateSource>>,
|
pub used_crate_source: FxHashMap<CrateNum, Lrc<CrateSource>>,
|
||||||
used_crates_static: Vec<(CrateNum, LibSource)>,
|
pub used_crates_static: Vec<(CrateNum, LibSource)>,
|
||||||
used_crates_dynamic: Vec<(CrateNum, LibSource)>,
|
pub used_crates_dynamic: Vec<(CrateNum, LibSource)>,
|
||||||
wasm_imports: FxHashMap<String, String>,
|
pub wasm_imports: FxHashMap<String, String>,
|
||||||
lang_item_to_crate: FxHashMap<LangItem, CrateNum>,
|
pub lang_item_to_crate: FxHashMap<LangItem, CrateNum>,
|
||||||
missing_lang_items: FxHashMap<CrateNum, Vec<LangItem>>,
|
pub missing_lang_items: FxHashMap<CrateNum, Vec<LangItem>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
__build_diagnostic_array! { librustc_codegen_ssa, DIAGNOSTICS }
|
__build_diagnostic_array! { librustc_codegen_ssa, DIAGNOSTICS }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue