Skip to content

Commit

Permalink
Finished moving backend-agnostic code to rustc_codegen_ssa
Browse files Browse the repository at this point in the history
  • Loading branch information
denismerigoux authored and eddyb committed Nov 16, 2018
1 parent c0a428e commit 015e444
Show file tree
Hide file tree
Showing 28 changed files with 110 additions and 154 deletions.
9 changes: 5 additions & 4 deletions src/librustc_codegen_llvm/abi.rs
Expand Up @@ -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};
Expand Down
6 changes: 3 additions & 3 deletions src/librustc_codegen_llvm/asm.rs
Expand Up @@ -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};
Expand Down
2 changes: 1 addition & 1 deletion src/librustc_codegen_llvm/attributes.rs
Expand Up @@ -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};
Expand Down
3 changes: 2 additions & 1 deletion src/librustc_codegen_llvm/back/link.rs
Expand Up @@ -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;
Expand Down
3 changes: 1 addition & 2 deletions src/librustc_codegen_llvm/back/write.rs
Expand Up @@ -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};
Expand Down
56 changes: 11 additions & 45 deletions src/librustc_codegen_llvm/base.rs
Expand Up @@ -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>,
Expand Down
12 changes: 6 additions & 6 deletions src/librustc_codegen_llvm/builder.rs
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
6 changes: 2 additions & 4 deletions src/librustc_codegen_llvm/callee.rs
Expand Up @@ -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.
Expand Down
13 changes: 3 additions & 10 deletions src/librustc_codegen_llvm/common.rs
Expand Up @@ -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;

Expand Down
11 changes: 7 additions & 4 deletions src/librustc_codegen_llvm/consts.rs
Expand Up @@ -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};

Expand Down Expand Up @@ -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,
Expand Down
19 changes: 10 additions & 9 deletions src/librustc_codegen_llvm/context.rs
Expand Up @@ -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;
Expand All @@ -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};
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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"
Expand All @@ -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;
}
Expand Down Expand Up @@ -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
}

Expand Down
2 changes: 1 addition & 1 deletion src/librustc_codegen_llvm/debuginfo/create_scope_map.rs
Expand Up @@ -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};

Expand Down
2 changes: 1 addition & 1 deletion src/librustc_codegen_llvm/debuginfo/gdb.rs
Expand Up @@ -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;

Expand Down
3 changes: 1 addition & 2 deletions src/librustc_codegen_llvm/debuginfo/metadata.rs
Expand Up @@ -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;
Expand Down

0 comments on commit 015e444

Please sign in to comment.