1
Fork 0

librustc_codegen_llvm => 2018

This commit is contained in:
Taiki Endo 2019-02-18 03:58:58 +09:00
parent 8af675a075
commit 1b7ca961d9
36 changed files with 190 additions and 199 deletions

View file

@ -2,6 +2,7 @@
authors = ["The Rust Project Developers"] authors = ["The Rust Project Developers"]
name = "rustc_codegen_llvm" name = "rustc_codegen_llvm"
version = "0.0.0" version = "0.0.0"
edition = "2018"
[lib] [lib]
name = "rustc_codegen_llvm" name = "rustc_codegen_llvm"
@ -10,7 +11,7 @@ crate-type = ["dylib"]
test = false test = false
[dependencies] [dependencies]
cc = "1.0.1" cc = "1.0.1" # Used to locate MSVC
num_cpus = "1.0" num_cpus = "1.0"
rustc-demangle = "0.1.4" rustc-demangle = "0.1.4"
rustc_llvm = { path = "../librustc_llvm" } rustc_llvm = { path = "../librustc_llvm" }

View file

@ -1,12 +1,12 @@
use llvm::{self, AttributePlace}; use crate::llvm::{self, AttributePlace};
use crate::builder::Builder;
use crate::context::CodegenCx;
use crate::type_::Type;
use crate::type_of::{LayoutLlvmExt, PointerKind};
use crate::value::Value;
use rustc_codegen_ssa::MemFlags; use rustc_codegen_ssa::MemFlags;
use builder::Builder;
use context::CodegenCx;
use rustc_codegen_ssa::mir::place::PlaceRef; use rustc_codegen_ssa::mir::place::PlaceRef;
use rustc_codegen_ssa::mir::operand::OperandValue; 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 rustc_target::abi::call::ArgType;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;

View file

@ -1,13 +1,13 @@
use std::ffi::CString; use std::ffi::CString;
use attributes; use crate::attributes;
use libc::c_uint; use libc::c_uint;
use rustc::middle::allocator::AllocatorKind; use rustc::middle::allocator::AllocatorKind;
use rustc::ty::TyCtxt; use rustc::ty::TyCtxt;
use rustc_allocator::{ALLOCATOR_METHODS, AllocatorTy}; use rustc_allocator::{ALLOCATOR_METHODS, AllocatorTy};
use ModuleLlvm; use crate::ModuleLlvm;
use llvm::{self, False, True}; use crate::llvm::{self, False, True};
pub(crate) unsafe fn codegen(tcx: TyCtxt, mods: &ModuleLlvm, kind: AllocatorKind) { pub(crate) unsafe fn codegen(tcx: TyCtxt, mods: &ModuleLlvm, kind: AllocatorKind) {
let llcx = &*mods.llcx; let llcx = &*mods.llcx;

View file

@ -1,8 +1,8 @@
use llvm; use crate::llvm;
use context::CodegenCx; use crate::context::CodegenCx;
use type_of::LayoutLlvmExt; use crate::type_of::LayoutLlvmExt;
use builder::Builder; use crate::builder::Builder;
use value::Value; use crate::value::Value;
use rustc::hir; use rustc::hir;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;

View file

@ -15,15 +15,15 @@ use rustc_data_structures::fx::FxHashMap;
use rustc_target::spec::PanicStrategy; use rustc_target::spec::PanicStrategy;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use abi::Abi; use crate::abi::Abi;
use attributes; use crate::attributes;
use llvm::{self, Attribute}; use crate::llvm::{self, Attribute};
use llvm::AttributePlace::Function; use crate::llvm::AttributePlace::Function;
use llvm_util; use crate::llvm_util;
pub use syntax::attr::{self, InlineAttr, OptimizeAttr}; pub use syntax::attr::{self, InlineAttr, OptimizeAttr};
use context::CodegenCx; use crate::context::CodegenCx;
use value::Value; use crate::value::Value;
/// Mark LLVM function to use provided inline heuristic. /// Mark LLVM function to use provided inline heuristic.
#[inline] #[inline]

View file

@ -7,12 +7,11 @@ use std::path::{Path, PathBuf};
use std::ptr; use std::ptr;
use std::str; use std::str;
use back::bytecode::RLIB_BYTECODE_EXTENSION; use crate::back::bytecode::RLIB_BYTECODE_EXTENSION;
use crate::llvm::archive_ro::{ArchiveRO, Child};
use crate::llvm::{self, ArchiveKind};
use crate::metadata::METADATA_FILENAME;
use rustc_codegen_ssa::back::archive::find_library; use rustc_codegen_ssa::back::archive::find_library;
use libc;
use llvm::archive_ro::{ArchiveRO, Child};
use llvm::{self, ArchiveKind};
use metadata::METADATA_FILENAME;
use rustc::session::Session; use rustc::session::Session;
pub struct ArchiveConfig<'a> { pub struct ArchiveConfig<'a> {

View file

@ -1,13 +1,15 @@
use back::wasm;
use super::archive::{ArchiveBuilder, ArchiveConfig}; use super::archive::{ArchiveBuilder, ArchiveConfig};
use super::bytecode::RLIB_BYTECODE_EXTENSION; use super::bytecode::RLIB_BYTECODE_EXTENSION;
use super::rpath::RPathConfig;
use super::rpath;
use crate::back::wasm;
use crate::metadata::METADATA_FILENAME;
use crate::context::get_reloc_model;
use crate::llvm;
use rustc_codegen_ssa::back::linker::Linker; use rustc_codegen_ssa::back::linker::Linker;
use rustc_codegen_ssa::back::link::{remove, ignored_for_lto, each_linked_rlib, linker_and_flavor, use rustc_codegen_ssa::back::link::{remove, ignored_for_lto, each_linked_rlib, linker_and_flavor,
get_linker}; get_linker};
use rustc_codegen_ssa::back::command::Command; use rustc_codegen_ssa::back::command::Command;
use super::rpath::RPathConfig;
use super::rpath;
use metadata::METADATA_FILENAME;
use rustc::session::config::{self, DebugInfo, OutputFilenames, OutputType, PrintRequest}; use rustc::session::config::{self, DebugInfo, OutputFilenames, OutputType, PrintRequest};
use rustc::session::config::{RUST_CGU_EXT, Lto, Sanitizer}; use rustc::session::config::{RUST_CGU_EXT, Lto, Sanitizer};
use rustc::session::filesearch; use rustc::session::filesearch;
@ -22,8 +24,6 @@ use rustc::hir::def_id::CrateNum;
use tempfile::{Builder as TempFileBuilder, TempDir}; use tempfile::{Builder as TempFileBuilder, TempDir};
use rustc_target::spec::{PanicStrategy, RelroLevel, LinkerFlavor}; use rustc_target::spec::{PanicStrategy, RelroLevel, LinkerFlavor};
use rustc_data_structures::fx::FxHashSet; use rustc_data_structures::fx::FxHashSet;
use context::get_reloc_model;
use llvm;
use std::ascii; use std::ascii;
use std::char; use std::char;
@ -523,7 +523,7 @@ fn link_natively(sess: &Session,
} }
{ {
let target_cpu = ::llvm_util::target_cpu(sess); let target_cpu = crate::llvm_util::target_cpu(sess);
let mut linker = codegen_results.linker_info.to_linker(cmd, &sess, flavor, target_cpu); let mut linker = codegen_results.linker_info.to_linker(cmd, &sess, flavor, target_cpu);
link_args(&mut *linker, flavor, sess, crate_type, tmpdir, link_args(&mut *linker, flavor, sess, crate_type, tmpdir,
out_filename, codegen_results); out_filename, codegen_results);

View file

@ -1,12 +1,15 @@
use back::bytecode::{DecodedBytecode, RLIB_BYTECODE_EXTENSION}; use crate::back::bytecode::{DecodedBytecode, RLIB_BYTECODE_EXTENSION};
use crate::back::write::{self, DiagnosticHandlers, with_llvm_pmb, save_temp_bitcode,
to_llvm_opt_settings};
use crate::llvm::archive_ro::ArchiveRO;
use crate::llvm::{self, True, False};
use crate::time_graph::Timeline;
use crate::{ModuleLlvm, LlvmCodegenBackend};
use rustc_codegen_ssa::back::symbol_export; use rustc_codegen_ssa::back::symbol_export;
use rustc_codegen_ssa::back::write::{ModuleConfig, CodegenContext, FatLTOInput}; use rustc_codegen_ssa::back::write::{ModuleConfig, CodegenContext, FatLTOInput};
use rustc_codegen_ssa::back::lto::{SerializedModule, LtoModuleCodegen, ThinShared, ThinModule}; use rustc_codegen_ssa::back::lto::{SerializedModule, LtoModuleCodegen, ThinShared, ThinModule};
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use back::write::{self, DiagnosticHandlers, with_llvm_pmb, save_temp_bitcode, to_llvm_opt_settings};
use errors::{FatalError, Handler}; use errors::{FatalError, Handler};
use llvm::archive_ro::ArchiveRO;
use llvm::{self, True, False};
use rustc::dep_graph::WorkProduct; use rustc::dep_graph::WorkProduct;
use rustc::dep_graph::cgu_reuse_tracker::CguReuse; use rustc::dep_graph::cgu_reuse_tracker::CguReuse;
use rustc::hir::def_id::LOCAL_CRATE; use rustc::hir::def_id::LOCAL_CRATE;
@ -14,12 +17,8 @@ use rustc::middle::exported_symbols::SymbolExportLevel;
use rustc::session::config::{self, Lto}; use rustc::session::config::{self, Lto};
use rustc::util::common::time_ext; use rustc::util::common::time_ext;
use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::fx::FxHashMap;
use time_graph::Timeline;
use {ModuleLlvm, LlvmCodegenBackend};
use rustc_codegen_ssa::{ModuleCodegen, ModuleKind}; use rustc_codegen_ssa::{ModuleCodegen, ModuleKind};
use libc;
use std::ffi::{CStr, CString}; use std::ffi::{CStr, CString};
use std::ptr; use std::ptr;
use std::slice; use std::slice;

View file

@ -1,28 +1,27 @@
use attributes; use crate::attributes;
use back::bytecode::{self, RLIB_BYTECODE_EXTENSION}; use crate::back::bytecode::{self, RLIB_BYTECODE_EXTENSION};
use back::lto::ThinBuffer; use crate::back::lto::ThinBuffer;
use crate::base;
use crate::consts;
use crate::time_graph::Timeline;
use crate::llvm::{self, DiagnosticInfo, PassManager, SMDiagnostic};
use crate::llvm_util;
use crate::ModuleLlvm;
use crate::type_::Type;
use crate::context::{is_pie_binary, get_reloc_model};
use crate::common;
use crate::LlvmCodegenBackend;
use rustc_codegen_ssa::back::write::{CodegenContext, ModuleConfig, run_assembler}; use rustc_codegen_ssa::back::write::{CodegenContext, ModuleConfig, run_assembler};
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use base;
use consts;
use rustc::hir::def_id::LOCAL_CRATE; use rustc::hir::def_id::LOCAL_CRATE;
use rustc::session::config::{self, OutputType, Passes, Lto}; use rustc::session::config::{self, OutputType, Passes, Lto};
use rustc::session::Session; use rustc::session::Session;
use rustc::ty::TyCtxt; use rustc::ty::TyCtxt;
use time_graph::Timeline;
use llvm::{self, DiagnosticInfo, PassManager, SMDiagnostic};
use llvm_util;
use ModuleLlvm;
use rustc_codegen_ssa::{ModuleCodegen, CompiledModule}; use rustc_codegen_ssa::{ModuleCodegen, CompiledModule};
use rustc::util::common::time_ext; use rustc::util::common::time_ext;
use rustc_fs_util::{path_to_c_string, link_or_copy}; use rustc_fs_util::{path_to_c_string, link_or_copy};
use rustc_data_structures::small_c_str::SmallCStr; use rustc_data_structures::small_c_str::SmallCStr;
use errors::{self, Handler, FatalError}; use errors::{Handler, FatalError};
use type_::Type;
use context::{is_pie_binary, get_reloc_model};
use common;
use LlvmCodegenBackend;
use rustc_demangle;
use std::ffi::{CString, CStr}; use std::ffi::{CString, CStr};
use std::fs; use std::fs;

View file

@ -18,18 +18,18 @@ use rustc_codegen_ssa::{ModuleCodegen, ModuleKind};
use rustc_codegen_ssa::base::maybe_create_entry_wrapper; use rustc_codegen_ssa::base::maybe_create_entry_wrapper;
use super::LlvmCodegenBackend; use super::LlvmCodegenBackend;
use llvm; use crate::llvm;
use metadata; use crate::metadata;
use crate::builder::Builder;
use crate::common;
use crate::context::CodegenCx;
use crate::monomorphize::partitioning::CodegenUnitExt;
use rustc::dep_graph; use rustc::dep_graph;
use rustc::mir::mono::{Linkage, Visibility, Stats}; use rustc::mir::mono::{Linkage, Visibility, Stats};
use rustc::middle::cstore::{EncodedMetadata}; use rustc::middle::cstore::{EncodedMetadata};
use rustc::ty::TyCtxt; use rustc::ty::TyCtxt;
use rustc::middle::exported_symbols; use rustc::middle::exported_symbols;
use rustc::session::config::{self, DebugInfo}; use rustc::session::config::{self, DebugInfo};
use builder::Builder;
use common;
use context::CodegenCx;
use monomorphize::partitioning::CodegenUnitExt;
use rustc_codegen_ssa::mono_item::MonoItemExt; use rustc_codegen_ssa::mono_item::MonoItemExt;
use rustc_data_structures::small_c_str::SmallCStr; use rustc_data_structures::small_c_str::SmallCStr;
@ -41,7 +41,7 @@ use std::time::Instant;
use syntax_pos::symbol::InternedString; use syntax_pos::symbol::InternedString;
use rustc::hir::CodegenFnAttrs; use rustc::hir::CodegenFnAttrs;
use value::Value; use crate::value::Value;
pub fn write_metadata<'a, 'gcx>( pub fn write_metadata<'a, 'gcx>(

View file

@ -1,12 +1,12 @@
use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect}; use crate::llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect};
use llvm::{self, False, BasicBlock}; use crate::llvm::{self, False, BasicBlock};
use crate::common::Funclet;
use crate::context::CodegenCx;
use crate::type_::Type;
use crate::type_of::LayoutLlvmExt;
use crate::value::Value;
use rustc_codegen_ssa::common::{IntPredicate, TypeKind, RealPredicate}; use rustc_codegen_ssa::common::{IntPredicate, TypeKind, RealPredicate};
use rustc_codegen_ssa::{self, MemFlags}; use rustc_codegen_ssa::MemFlags;
use common::Funclet;
use context::CodegenCx;
use type_::Type;
use type_of::LayoutLlvmExt;
use value::Value;
use libc::{c_uint, c_char}; use libc::{c_uint, c_char};
use rustc::ty::{self, Ty, TyCtxt}; use rustc::ty::{self, Ty, TyCtxt};
use rustc::ty::layout::{self, Align, Size, TyLayout}; use rustc::ty::layout::{self, Align, Size, TyLayout};
@ -14,7 +14,6 @@ use rustc::hir::def_id::DefId;
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 rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use syntax;
use rustc_codegen_ssa::base::to_immediate; use rustc_codegen_ssa::base::to_immediate;
use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef}; use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef};
use rustc_codegen_ssa::mir::place::PlaceRef; use rustc_codegen_ssa::mir::place::PlaceRef;

View file

@ -4,11 +4,11 @@
//! and methods are represented as just a fn ptr and not a full //! and methods are represented as just a fn ptr and not a full
//! closure. //! closure.
use attributes; use crate::attributes;
use llvm; use crate::llvm;
use monomorphize::Instance; use crate::monomorphize::Instance;
use context::CodegenCx; use crate::context::CodegenCx;
use value::Value; use crate::value::Value;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use rustc::ty::TypeFoldable; use rustc::ty::TypeFoldable;

View file

@ -2,17 +2,17 @@
//! 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 crate::llvm::{self, True, False, Bool, BasicBlock, OperandBundleDef};
use abi; use crate::abi;
use consts; use crate::consts;
use type_::Type; use crate::type_::Type;
use type_of::LayoutLlvmExt; use crate::type_of::LayoutLlvmExt;
use value::Value; use crate::value::Value;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use crate::consts::const_alloc_to_llvm;
use rustc::ty::layout::{HasDataLayout, LayoutOf, self, TyLayout, Size}; use rustc::ty::layout::{HasDataLayout, LayoutOf, self, TyLayout, Size};
use rustc::mir::interpret::{Scalar, AllocKind, Allocation}; use rustc::mir::interpret::{Scalar, AllocKind, Allocation};
use consts::const_alloc_to_llvm;
use rustc_codegen_ssa::mir::place::PlaceRef; use rustc_codegen_ssa::mir::place::PlaceRef;
use libc::{c_uint, c_char}; use libc::{c_uint, c_char};
@ -20,7 +20,7 @@ use libc::{c_uint, c_char};
use syntax::symbol::LocalInternedString; use syntax::symbol::LocalInternedString;
use syntax::ast::Mutability; use syntax::ast::Mutability;
pub use context::CodegenCx; pub use crate::context::CodegenCx;
/* /*
* A note on nomenclature of linking: "extern", "foreign", and "upcall". * A note on nomenclature of linking: "extern", "foreign", and "upcall".

View file

@ -1,20 +1,20 @@
use crate::llvm::{self, SetUnnamedAddr, True};
use crate::debuginfo;
use crate::monomorphize::MonoItem;
use crate::common::CodegenCx;
use crate::monomorphize::Instance;
use crate::base;
use crate::type_::Type;
use crate::type_of::LayoutLlvmExt;
use crate::value::Value;
use libc::c_uint; use libc::c_uint;
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, use rustc::mir::interpret::{ConstValue, Allocation, read_target_uint,
Pointer, ErrorHandled, GlobalId}; Pointer, ErrorHandled, GlobalId};
use rustc::hir::Node; use rustc::hir::Node;
use debuginfo;
use monomorphize::MonoItem;
use common::CodegenCx;
use monomorphize::Instance;
use syntax_pos::Span; use syntax_pos::Span;
use rustc_target::abi::HasDataLayout; use rustc_target::abi::HasDataLayout;
use syntax_pos::symbol::LocalInternedString; use syntax_pos::symbol::LocalInternedString;
use base;
use type_::Type;
use type_of::LayoutLlvmExt;
use value::Value;
use rustc::ty::{self, Ty}; use rustc::ty::{self, Ty};
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;

View file

@ -1,14 +1,14 @@
use attributes; use crate::attributes;
use llvm; use crate::llvm;
use crate::debuginfo;
use crate::monomorphize::Instance;
use crate::value::Value;
use rustc::dep_graph::DepGraphSafe; use rustc::dep_graph::DepGraphSafe;
use rustc::hir; use rustc::hir;
use debuginfo;
use monomorphize::Instance;
use value::Value;
use monomorphize::partitioning::CodegenUnit; use crate::monomorphize::partitioning::CodegenUnit;
use type_::Type; use crate::type_::Type;
use type_of::PointeeInfo; use crate::type_of::PointeeInfo;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use libc::c_uint; use libc::c_uint;
@ -23,7 +23,7 @@ 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::callee::resolve_and_get_fn;
use rustc_codegen_ssa::base::wants_msvc_seh; use rustc_codegen_ssa::base::wants_msvc_seh;
use callee::get_fn; use crate::callee::get_fn;
use std::ffi::CStr; use std::ffi::CStr;
use std::cell::{Cell, RefCell}; use std::cell::{Cell, RefCell};
@ -31,7 +31,7 @@ use std::iter;
use std::str; use std::str;
use std::sync::Arc; use std::sync::Arc;
use syntax::symbol::LocalInternedString; use syntax::symbol::LocalInternedString;
use abi::Abi; use crate::abi::Abi;
/// There is one `CodegenCx` per compilation unit. Each one has its own LLVM /// There is one `CodegenCx` per compilation unit. Each one has its own LLVM
/// `llvm::Context` so that several compilation units may be optimized in parallel. /// `llvm::Context` so that several compilation units may be optimized in parallel.
@ -103,7 +103,7 @@ pub fn get_reloc_model(sess: &Session) -> llvm::RelocMode {
None => &sess.target.target.options.relocation_model[..], None => &sess.target.target.options.relocation_model[..],
}; };
match ::back::write::RELOC_MODEL_ARGS.iter().find( match crate::back::write::RELOC_MODEL_ARGS.iter().find(
|&&arg| arg.0 == reloc_model_arg) { |&&arg| arg.0 == reloc_model_arg) {
Some(x) => x.1, Some(x) => x.1,
_ => { _ => {
@ -121,7 +121,7 @@ fn get_tls_model(sess: &Session) -> llvm::ThreadLocalMode {
None => &sess.target.target.options.tls_model[..], None => &sess.target.target.options.tls_model[..],
}; };
match ::back::write::TLS_MODEL_ARGS.iter().find( match crate::back::write::TLS_MODEL_ARGS.iter().find(
|&&arg| arg.0 == tls_model_arg) { |&&arg| arg.0 == tls_model_arg) {
Some(x) => x.1, Some(x) => x.1,
_ => { _ => {
@ -154,7 +154,7 @@ pub unsafe fn create_module(
// Ensure the data-layout values hardcoded remain the defaults. // Ensure the data-layout values hardcoded remain the defaults.
if sess.target.target.options.is_builtin { if sess.target.target.options.is_builtin {
let tm = ::back::write::create_target_machine(tcx, false); let tm = crate::back::write::create_target_machine(tcx, false);
llvm::LLVMRustSetDataLayoutFromTargetMachine(llmod, tm); llvm::LLVMRustSetDataLayoutFromTargetMachine(llmod, tm);
llvm::LLVMRustDisposeTargetMachine(tm); llvm::LLVMRustDisposeTargetMachine(tm);
@ -212,7 +212,7 @@ pub unsafe fn create_module(
impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> { impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
crate fn new(tcx: TyCtxt<'ll, 'tcx, 'tcx>, crate fn new(tcx: TyCtxt<'ll, 'tcx, 'tcx>,
codegen_unit: Arc<CodegenUnit<'tcx>>, codegen_unit: Arc<CodegenUnit<'tcx>>,
llvm_module: &'ll ::ModuleLlvm) llvm_module: &'ll crate::ModuleLlvm)
-> Self { -> Self {
// An interesting part of Windows which MSVC forces our hand on (and // An interesting part of Windows which MSVC forces our hand on (and
// apparently MinGW didn't) is the usage of `dllimport` and `dllexport` // apparently MinGW didn't) is the usage of `dllimport` and `dllexport`
@ -377,7 +377,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
// Returns a Value of the "eh_unwind_resume" lang item if one is defined, // Returns a Value of the "eh_unwind_resume" lang item if one is defined,
// otherwise declares it as an external function. // otherwise declares it as an external function.
fn eh_unwind_resume(&self) -> &'ll Value { fn eh_unwind_resume(&self) -> &'ll Value {
use attributes; use crate::attributes;
let unwresume = &self.eh_unwind_resume; let unwresume = &self.eh_unwind_resume;
if let Some(llfn) = unwresume.get() { if let Some(llfn) = unwresume.get() {
return llfn; return llfn;

View file

@ -2,9 +2,9 @@ use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, FunctionDebugContextDat
use super::metadata::file_metadata; use super::metadata::file_metadata;
use super::utils::{DIB, span_start}; use super::utils::{DIB, span_start};
use llvm; use crate::llvm;
use llvm::debuginfo::{DIScope, DISubprogram}; use crate::llvm::debuginfo::{DIScope, DISubprogram};
use common::CodegenCx; use crate::common::CodegenCx;
use rustc::mir::{Mir, SourceScope}; use rustc::mir::{Mir, SourceScope};
use libc::c_uint; use libc::c_uint;

View file

@ -1,11 +1,11 @@
// .debug_gdb_scripts binary section. // .debug_gdb_scripts binary section.
use llvm; use crate::llvm;
use common::CodegenCx; use crate::common::CodegenCx;
use builder::Builder; use crate::builder::Builder;
use crate::value::Value;
use rustc::session::config::DebugInfo; use rustc::session::config::DebugInfo;
use value::Value;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use syntax::attr; use syntax::attr;

View file

@ -7,15 +7,16 @@ 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 crate::abi;
use crate::value::Value;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use abi;
use value::Value;
use llvm; use crate::llvm;
use llvm::debuginfo::{DIArray, DIType, DIFile, DIScope, DIDescriptor, use crate::llvm::debuginfo::{DIArray, DIType, DIFile, DIScope, DIDescriptor,
DICompositeType, DILexicalBlock, DIFlags, DebugEmissionKind}; DICompositeType, DILexicalBlock, DIFlags, DebugEmissionKind};
use llvm_util; use crate::llvm_util;
use crate::common::CodegenCx;
use rustc_data_structures::stable_hasher::{HashStable, StableHasher}; use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
use rustc::hir::CodegenFnAttrFlags; use rustc::hir::CodegenFnAttrFlags;
use rustc::hir::def::CtorKind; use rustc::hir::def::CtorKind;
@ -23,7 +24,6 @@ use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE};
use rustc::ich::NodeIdHashingMode; use rustc::ich::NodeIdHashingMode;
use rustc_data_structures::fingerprint::Fingerprint; use rustc_data_structures::fingerprint::Fingerprint;
use rustc::ty::Instance; use rustc::ty::Instance;
use common::CodegenCx;
use rustc::ty::{self, AdtKind, ParamEnv, Ty, TyCtxt}; use rustc::ty::{self, AdtKind, ParamEnv, Ty, TyCtxt};
use rustc::ty::layout::{self, Align, Integer, IntegerExt, LayoutOf, use rustc::ty::layout::{self, Align, Integer, IntegerExt, LayoutOf,
PrimitiveExt, Size, TyLayout}; PrimitiveExt, Size, TyLayout};

View file

@ -10,24 +10,24 @@ use self::type_names::compute_debuginfo_type_name;
use self::metadata::{type_metadata, file_metadata, TypeMap}; use self::metadata::{type_metadata, file_metadata, TypeMap};
use self::source_loc::InternalDebugLocation::{self, UnknownLocation}; use self::source_loc::InternalDebugLocation::{self, UnknownLocation};
use llvm; use crate::llvm;
use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags, use crate::llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags,
DISPFlags, DILexicalBlock}; DISPFlags, DILexicalBlock};
use rustc::hir::CodegenFnAttrFlags; use rustc::hir::CodegenFnAttrFlags;
use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE}; use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE};
use rustc::ty::subst::{Substs, UnpackedKind}; use rustc::ty::subst::{Substs, UnpackedKind};
use abi::Abi; use crate::abi::Abi;
use common::CodegenCx; use crate::common::CodegenCx;
use builder::Builder; use crate::builder::Builder;
use monomorphize::Instance; use crate::monomorphize::Instance;
use crate::value::Value;
use rustc::ty::{self, ParamEnv, Ty, InstanceDef}; use rustc::ty::{self, ParamEnv, Ty, InstanceDef};
use rustc::mir; use rustc::mir;
use rustc::session::config::{self, DebugInfo}; use rustc::session::config::{self, DebugInfo};
use rustc::util::nodemap::{DefIdMap, FxHashMap, FxHashSet}; 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 rustc_codegen_ssa::debuginfo::{FunctionDebugContext, MirDebugScope, VariableAccess, use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, MirDebugScope, VariableAccess,
VariableKind, FunctionDebugContextData}; VariableKind, FunctionDebugContextData};

View file

@ -2,14 +2,14 @@
use super::metadata::{unknown_file_metadata, UNKNOWN_LINE_NUMBER}; use super::metadata::{unknown_file_metadata, UNKNOWN_LINE_NUMBER};
use super::utils::{DIB, debug_context}; use super::utils::{DIB, debug_context};
use monomorphize::Instance; use crate::monomorphize::Instance;
use rustc::ty; use rustc::ty;
use llvm; use crate::llvm;
use llvm::debuginfo::DIScope; use crate::llvm::debuginfo::DIScope;
use crate::common::CodegenCx;
use rustc::hir::def_id::DefId; use rustc::hir::def_id::DefId;
use rustc::hir::map::DefPathData; use rustc::hir::map::DefPathData;
use common::CodegenCx;
use rustc_data_structures::small_c_str::SmallCStr; use rustc_data_structures::small_c_str::SmallCStr;

View file

@ -4,9 +4,9 @@ use super::utils::{debug_context, span_start};
use super::metadata::UNKNOWN_COLUMN_NUMBER; use super::metadata::UNKNOWN_COLUMN_NUMBER;
use rustc_codegen_ssa::debuginfo::FunctionDebugContext; use rustc_codegen_ssa::debuginfo::FunctionDebugContext;
use llvm; use crate::llvm;
use llvm::debuginfo::DIScope; use crate::llvm::debuginfo::DIScope;
use builder::Builder; use crate::builder::Builder;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use libc::c_uint; use libc::c_uint;

View file

@ -1,6 +1,6 @@
// Type Names for Debug Info. // Type Names for Debug Info.
use common::CodegenCx; use crate::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};
@ -125,7 +125,7 @@ pub fn push_debuginfo_type_name<'a, 'tcx>(cx: &CodegenCx<'a, 'tcx>,
} }
let abi = sig.abi(); let abi = sig.abi();
if abi != ::abi::Abi::Rust { if abi != crate::abi::Abi::Rust {
output.push_str("extern \""); output.push_str("extern \"");
output.push_str(abi.name()); output.push_str(abi.name());
output.push_str("\" "); output.push_str("\" ");

View file

@ -6,12 +6,12 @@ use super::namespace::item_namespace;
use rustc::hir::def_id::DefId; use rustc::hir::def_id::DefId;
use rustc::ty::DefIdTree; use rustc::ty::DefIdTree;
use llvm; use crate::llvm;
use llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor, DIArray}; use crate::llvm::debuginfo::{DIScope, DIBuilder, DIDescriptor, DIArray};
use common::{CodegenCx}; use crate::common::{CodegenCx};
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use syntax_pos::{self, Span}; use syntax_pos::Span;
pub fn is_node_local_to_unit(cx: &CodegenCx, def_id: DefId) -> bool pub fn is_node_local_to_unit(cx: &CodegenCx, def_id: DefId) -> bool
{ {

View file

@ -11,18 +11,18 @@
//! * Use define_* family of methods when you might be defining the Value. //! * Use define_* family of methods when you might be defining the Value.
//! * When in doubt, define. //! * When in doubt, define.
use llvm; use crate::llvm;
use llvm::AttributePlace::Function; use crate::llvm::AttributePlace::Function;
use crate::abi::{FnType, FnTypeExt};
use crate::attributes;
use crate::context::CodegenCx;
use crate::type_::Type;
use crate::value::Value;
use rustc::ty::{self, PolyFnSig}; use rustc::ty::{self, PolyFnSig};
use rustc::ty::layout::LayoutOf; use rustc::ty::layout::LayoutOf;
use rustc::session::config::Sanitizer; use rustc::session::config::Sanitizer;
use rustc_data_structures::small_c_str::SmallCStr; use rustc_data_structures::small_c_str::SmallCStr;
use abi::{FnType, FnTypeExt};
use attributes;
use context::CodegenCx;
use type_::Type;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use value::Value;
/// Declare a function. /// Declare a function.
/// ///

View file

@ -1,26 +1,26 @@
#![allow(non_upper_case_globals)] #![allow(non_upper_case_globals)]
use attributes; use crate::attributes;
use llvm; use crate::llvm;
use llvm_util; use crate::llvm_util;
use abi::{Abi, FnType, LlvmType, PassMode}; use crate::abi::{Abi, FnType, LlvmType, PassMode};
use crate::context::CodegenCx;
use crate::type_::Type;
use crate::type_of::LayoutLlvmExt;
use crate::builder::Builder;
use crate::value::Value;
use crate::va_arg::emit_va_arg;
use rustc_codegen_ssa::MemFlags; use rustc_codegen_ssa::MemFlags;
use rustc_codegen_ssa::mir::place::PlaceRef; use rustc_codegen_ssa::mir::place::PlaceRef;
use rustc_codegen_ssa::mir::operand::{OperandRef, OperandValue}; use rustc_codegen_ssa::mir::operand::{OperandRef, OperandValue};
use rustc_codegen_ssa::glue; use rustc_codegen_ssa::glue;
use rustc_codegen_ssa::base::{to_immediate, wants_msvc_seh, compare_simd_types}; use rustc_codegen_ssa::base::{to_immediate, wants_msvc_seh, compare_simd_types};
use context::CodegenCx;
use type_::Type;
use type_of::LayoutLlvmExt;
use rustc::ty::{self, Ty}; use rustc::ty::{self, Ty};
use rustc::ty::layout::{self, LayoutOf, HasTyCtxt, Primitive}; use rustc::ty::layout::{self, LayoutOf, HasTyCtxt, Primitive};
use rustc_codegen_ssa::common::{IntPredicate, TypeKind}; use rustc_codegen_ssa::common::{IntPredicate, TypeKind};
use rustc::hir; use rustc::hir;
use syntax::ast::{self, FloatTy}; use syntax::ast::{self, FloatTy};
use syntax::symbol::Symbol; use syntax::symbol::Symbol;
use builder::Builder;
use value::Value;
use va_arg::emit_va_arg;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;

View file

@ -21,6 +21,9 @@
#![feature(concat_idents)] #![feature(concat_idents)]
#![feature(link_args)] #![feature(link_args)]
#![feature(static_nobundle)] #![feature(static_nobundle)]
#![deny(rust_2018_idioms)]
#![allow(explicit_outlives_requirements)]
#![allow(elided_lifetimes_in_paths)]
use back::write::create_target_machine; use back::write::create_target_machine;
use syntax_pos::symbol::Symbol; use syntax_pos::symbol::Symbol;
@ -29,16 +32,11 @@ extern crate flate2;
#[macro_use] extern crate bitflags; #[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 num_cpus;
extern crate rustc_mir; extern crate rustc_mir;
extern crate rustc_allocator; extern crate rustc_allocator;
extern crate rustc_apfloat;
extern crate rustc_target; extern crate rustc_target;
#[macro_use] extern crate rustc_data_structures; #[macro_use] extern crate rustc_data_structures;
extern crate rustc_demangle;
extern crate rustc_incremental; extern crate rustc_incremental;
extern crate rustc_llvm;
extern crate rustc_codegen_utils; extern crate rustc_codegen_utils;
extern crate rustc_codegen_ssa; extern crate rustc_codegen_ssa;
extern crate rustc_fs_util; extern crate rustc_fs_util;
@ -48,9 +46,7 @@ extern crate rustc_fs_util;
extern crate syntax_pos; extern crate syntax_pos;
extern crate rustc_errors as errors; extern crate rustc_errors as errors;
extern crate serialize; extern crate serialize;
extern crate cc; // Used to locate MSVC
extern crate tempfile; extern crate tempfile;
extern crate memmap;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use rustc_codegen_ssa::back::write::{CodegenContext, ModuleConfig, FatLTOInput}; use rustc_codegen_ssa::back::write::{CodegenContext, ModuleConfig, FatLTOInput};

View file

@ -4,7 +4,7 @@ pub use self::OptimizationDiagnosticKind::*;
pub use self::Diagnostic::*; pub use self::Diagnostic::*;
use libc::c_uint; use libc::c_uint;
use value::Value; use crate::value::Value;
use super::{DiagnosticInfo, Twine}; use super::{DiagnosticInfo, Twine};

View file

@ -9,8 +9,6 @@ use libc::{c_uint, c_int, size_t, c_char};
use libc::{c_ulonglong, c_void}; use libc::{c_ulonglong, c_void};
use std::marker::PhantomData; use std::marker::PhantomData;
use syntax;
use rustc_codegen_ssa;
use super::RustString; use super::RustString;

View file

@ -16,7 +16,7 @@ use std::string::FromUtf8Error;
use std::slice; use std::slice;
use std::ffi::CStr; use std::ffi::CStr;
use std::cell::RefCell; use std::cell::RefCell;
use libc::{self, c_uint, c_char, size_t}; use libc::{c_uint, c_char, size_t};
use rustc_data_structures::small_c_str::SmallCStr; use rustc_data_structures::small_c_str::SmallCStr;
pub mod archive_ro; pub mod archive_ro;

View file

@ -1,6 +1,6 @@
use crate::back::write::create_informational_target_machine;
use crate::llvm;
use syntax_pos::symbol::Symbol; use syntax_pos::symbol::Symbol;
use back::write::create_informational_target_machine;
use llvm;
use rustc::session::Session; use rustc::session::Session;
use rustc::session::config::PrintRequest; use rustc::session::config::PrintRequest;
use rustc_target::spec::MergeFunctions; use rustc_target::spec::MergeFunctions;

View file

@ -1,8 +1,8 @@
use crate::llvm;
use crate::llvm::{False, ObjectFile, mk_section_iter};
use crate::llvm::archive_ro::ArchiveRO;
use rustc::middle::cstore::MetadataLoader; use rustc::middle::cstore::MetadataLoader;
use rustc_target::spec::Target; use rustc_target::spec::Target;
use llvm;
use llvm::{False, ObjectFile, mk_section_iter};
use llvm::archive_ro::ArchiveRO;
use rustc_data_structures::owning_ref::OwningRef; use rustc_data_structures::owning_ref::OwningRef;
use std::path::Path; use std::path::Path;

View file

@ -1,9 +1,9 @@
use attributes; use crate::attributes;
use base; use crate::base;
use context::CodegenCx; use crate::context::CodegenCx;
use llvm; use crate::llvm;
use monomorphize::Instance; use crate::monomorphize::Instance;
use type_of::LayoutLlvmExt; use crate::type_of::LayoutLlvmExt;
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;

View file

@ -1,22 +1,22 @@
#![allow(non_upper_case_globals)] #![allow(non_upper_case_globals)]
pub use llvm::Type; pub use crate::llvm::Type;
use llvm; use crate::llvm;
use llvm::{Bool, False, True}; use crate::llvm::{Bool, False, True};
use context::CodegenCx; use crate::context::CodegenCx;
use crate::value::Value;
use rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use value::Value;
use crate::common;
use crate::type_of::LayoutLlvmExt;
use crate::abi::{LlvmType, FnTypeExt};
use rustc::util::nodemap::FxHashMap; use rustc::util::nodemap::FxHashMap;
use rustc::ty::Ty; use rustc::ty::Ty;
use rustc::ty::layout::TyLayout; use rustc::ty::layout::TyLayout;
use rustc_target::abi::call::{CastTarget, FnType, Reg}; use rustc_target::abi::call::{CastTarget, FnType, Reg};
use rustc_data_structures::small_c_str::SmallCStr; use rustc_data_structures::small_c_str::SmallCStr;
use common;
use rustc_codegen_ssa::common::TypeKind; use rustc_codegen_ssa::common::TypeKind;
use type_of::LayoutLlvmExt;
use abi::{LlvmType, FnTypeExt};
use std::fmt; use std::fmt;
use std::cell::RefCell; use std::cell::RefCell;

View file

@ -1,12 +1,12 @@
use abi::{FnType, FnTypeExt}; use crate::abi::{FnType, FnTypeExt};
use common::*; use crate::common::*;
use crate::type_::Type;
use rustc::hir; use rustc::hir;
use rustc::ty::{self, Ty, TypeFoldable}; use rustc::ty::{self, Ty, TypeFoldable};
use rustc::ty::layout::{self, Align, LayoutOf, Size, TyLayout}; 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 rustc_codegen_ssa::traits::*; use rustc_codegen_ssa::traits::*;
use type_::Type;
use std::fmt::Write; use std::fmt::Write;

View file

@ -1,11 +1,11 @@
use builder::Builder; use crate::builder::Builder;
use crate::type_::Type;
use crate::type_of::LayoutLlvmExt;
use crate::value::Value;
use rustc_codegen_ssa::mir::operand::OperandRef; use rustc_codegen_ssa::mir::operand::OperandRef;
use rustc_codegen_ssa::traits::{BaseTypeMethods, BuilderMethods, ConstMethods, DerivedTypeMethods}; use rustc_codegen_ssa::traits::{BaseTypeMethods, BuilderMethods, ConstMethods, DerivedTypeMethods};
use rustc::ty::layout::{Align, HasDataLayout, HasTyCtxt, LayoutOf, Size}; use rustc::ty::layout::{Align, HasDataLayout, HasTyCtxt, LayoutOf, Size};
use rustc::ty::Ty; use rustc::ty::Ty;
use type_::Type;
use type_of::LayoutLlvmExt;
use value::Value;
#[allow(dead_code)] #[allow(dead_code)]
fn round_pointer_up_to_alignment( fn round_pointer_up_to_alignment(

View file

@ -1,6 +1,6 @@
pub use llvm::Value; pub use crate::llvm::Value;
use llvm; use crate::llvm;
use std::fmt; use std::fmt;
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};