Skip to content

Commit 015e444

Browse files
denismerigouxeddyb
authored andcommitted
Finished moving backend-agnostic code to rustc_codegen_ssa
1 parent c0a428e commit 015e444

28 files changed

+110
-154
lines changed

src/librustc_codegen_llvm/abi.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,17 @@
99
// except according to those terms.
1010

1111
use llvm::{self, AttributePlace};
12-
use builder::{Builder, MemFlags};
12+
use rustc_codegen_ssa::MemFlags;
13+
use builder::Builder;
1314
use context::CodegenCx;
14-
use mir::place::PlaceRef;
15-
use mir::operand::OperandValue;
15+
use rustc_codegen_ssa::mir::place::PlaceRef;
16+
use rustc_codegen_ssa::mir::operand::OperandValue;
1617
use type_::Type;
1718
use type_of::{LayoutLlvmExt, PointerKind};
1819
use value::Value;
1920
use rustc_target::abi::call::ArgType;
2021

21-
use interfaces::*;
22+
use rustc_codegen_ssa::interfaces::*;
2223

2324
use rustc_target::abi::{HasDataLayout, LayoutOf, Size, TyLayout, Abi as LayoutAbi};
2425
use rustc::ty::{self, Ty, Instance};

src/librustc_codegen_llvm/asm.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ use builder::Builder;
1515
use value::Value;
1616

1717
use rustc::hir;
18-
use interfaces::*;
18+
use rustc_codegen_ssa::interfaces::*;
1919

20-
use mir::place::PlaceRef;
21-
use mir::operand::OperandValue;
20+
use rustc_codegen_ssa::mir::place::PlaceRef;
21+
use rustc_codegen_ssa::mir::operand::OperandValue;
2222

2323
use std::ffi::CString;
2424
use libc::{c_uint, c_char};

src/librustc_codegen_llvm/attributes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use rustc::ty::query::Providers;
2121
use rustc_data_structures::sync::Lrc;
2222
use rustc_data_structures::fx::FxHashMap;
2323
use rustc_target::spec::PanicStrategy;
24-
use interfaces::*;
24+
use rustc_codegen_ssa::interfaces::*;
2525

2626
use attributes;
2727
use llvm::{self, Attribute};

src/librustc_codegen_llvm/back/link.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ use rustc::session::search_paths::PathKind;
2222
use rustc::session::Session;
2323
use rustc::middle::cstore::{NativeLibrary, LibSource, NativeLibraryKind};
2424
use rustc::middle::dependency_format::Linkage;
25-
use {CodegenResults, CrateInfo};
25+
use rustc_codegen_ssa::CrateInfo;
26+
use CodegenResults;
2627
use rustc::util::common::time;
2728
use rustc_fs_util::fix_windows_verbatim_for_gcc;
2829
use rustc::hir::def_id::CrateNum;

src/librustc_codegen_llvm/back/write.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ use time_graph::{self, TimeGraph, Timeline};
2727
use llvm::{self, DiagnosticInfo, PassManager, SMDiagnostic};
2828
use llvm_util;
2929
use {CodegenResults, ModuleLlvm};
30-
use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen, CompiledModule};
31-
use CrateInfo;
30+
use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen, CompiledModule, CrateInfo};
3231
use rustc::hir::def_id::{CrateNum, LOCAL_CRATE};
3332
use rustc::ty::TyCtxt;
3433
use rustc::util::common::{time_ext, time_depth, set_time_depth, print_time_passes_entry};

src/librustc_codegen_llvm/base.rs

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -24,68 +24,34 @@
2424
//! int) and rec(x=int, y=int, z=int) will have the same llvm::Type.
2525
2626
use super::ModuleLlvm;
27-
use rustc_codegen_ssa::{ModuleCodegen, ModuleKind, CachedModuleCodegen};
27+
use rustc_codegen_ssa::{ModuleCodegen, ModuleKind};
28+
use rustc_codegen_ssa::base::maybe_create_entry_wrapper;
2829
use super::LlvmCodegenBackend;
2930

30-
use abi;
3131
use back::write;
3232
use llvm;
3333
use metadata;
34-
use rustc::dep_graph::cgu_reuse_tracker::CguReuse;
35-
use rustc::hir::def_id::{CrateNum, DefId, LOCAL_CRATE};
36-
use rustc::middle::lang_items::StartFnLangItem;
37-
use rustc::middle::weak_lang_items;
38-
use rustc::mir::mono::{Linkage, Visibility, Stats, CodegenUnitNameBuilder};
34+
use rustc::mir::mono::{Linkage, Visibility, Stats};
3935
use rustc::middle::cstore::{EncodedMetadata};
40-
use rustc::ty::{self, Ty, TyCtxt};
41-
use rustc::ty::layout::{self, Align, TyLayout, LayoutOf, HasTyCtxt};
42-
use rustc::ty::query::Providers;
43-
use rustc::middle::cstore::{self, LinkagePreference};
36+
use rustc::ty::TyCtxt;
4437
use rustc::middle::exported_symbols;
45-
use rustc::util::common::{time, print_time_passes_entry};
46-
use rustc::util::profiling::ProfileCategory;
47-
use rustc::session::config::{self, DebugInfo, EntryFnType, Lto};
48-
use rustc::session::Session;
49-
use rustc_incremental;
50-
use mir::place::PlaceRef;
51-
use builder::{Builder, MemFlags};
52-
use callee;
53-
use rustc_mir::monomorphize::item::DefPathBasedNames;
38+
use rustc::session::config::{self, DebugInfo};
39+
use builder::Builder;
5440
use common;
55-
use rustc_codegen_ssa::common::{RealPredicate, TypeKind, IntPredicate};
56-
use meth;
57-
use mir;
5841
use context::CodegenCx;
59-
use monomorphize::Instance;
60-
use monomorphize::partitioning::{CodegenUnit, CodegenUnitExt};
61-
use rustc_codegen_utils::symbol_names_test;
62-
use time_graph;
63-
use mono_item::{MonoItem, MonoItemExt};
64-
65-
use rustc::util::nodemap::FxHashMap;
66-
use CrateInfo;
42+
use monomorphize::partitioning::CodegenUnitExt;
43+
use rustc_codegen_ssa::mono_item::MonoItemExt;
6744
use rustc_data_structures::small_c_str::SmallCStr;
68-
use rustc_data_structures::sync::Lrc;
6945

70-
use interfaces::*;
46+
use rustc_codegen_ssa::interfaces::*;
7147

72-
use std::any::Any;
73-
use std::cmp;
7448
use std::ffi::CString;
75-
use std::marker;
76-
use std::ops::{Deref, DerefMut};
77-
use std::sync::mpsc;
78-
use std::time::{Instant, Duration};
79-
use syntax_pos::Span;
49+
use std::time::Instant;
8050
use syntax_pos::symbol::InternedString;
81-
use syntax::attr;
82-
use rustc::hir::{self, CodegenFnAttrs};
51+
use rustc::hir::CodegenFnAttrs;
8352

8453
use value::Value;
8554

86-
use mir::operand::OperandValue;
87-
88-
use rustc_codegen_utils::check_for_rustc_errors_attr;
8955

9056
pub(crate) fn write_metadata<'a, 'gcx>(
9157
tcx: TyCtxt<'a, 'gcx, 'gcx>,

src/librustc_codegen_llvm/builder.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use llvm::{AtomicRmwBinOp, AtomicOrdering, SynchronizationScope, AsmDialect};
1212
use llvm::{self, False, BasicBlock};
1313
use rustc_codegen_ssa::common::{IntPredicate, TypeKind, RealPredicate};
14-
use rustc_codegen_ssa;
14+
use rustc_codegen_ssa::{self, MemFlags};
1515
use common::Funclet;
1616
use context::CodegenCx;
1717
use type_::Type;
@@ -22,11 +22,11 @@ use rustc::ty::{self, Ty, TyCtxt};
2222
use rustc::ty::layout::{self, Align, Size, TyLayout};
2323
use rustc::session::config;
2424
use rustc_data_structures::small_c_str::SmallCStr;
25-
use interfaces::*;
25+
use rustc_codegen_ssa::interfaces::*;
2626
use syntax;
27-
use base;
28-
use mir::operand::{OperandValue, OperandRef};
29-
use mir::place::PlaceRef;
27+
use rustc_codegen_ssa::base::to_immediate;
28+
use rustc_codegen_ssa::mir::operand::{OperandValue, OperandRef};
29+
use rustc_codegen_ssa::mir::place::PlaceRef;
3030
use std::borrow::Cow;
3131
use std::ops::Range;
3232
use std::ptr;
@@ -582,7 +582,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
582582
}
583583
load
584584
});
585-
OperandValue::Immediate(base::to_immediate(self, llval, place.layout))
585+
OperandValue::Immediate(to_immediate(self, llval, place.layout))
586586
} else if let layout::Abi::ScalarPair(ref a, ref b) = place.layout.abi {
587587
let load = |i, scalar: &layout::Scalar| {
588588
let llptr = self.struct_gep(place.llval, i as u64);

src/librustc_codegen_llvm/callee.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ use llvm;
1919
use monomorphize::Instance;
2020
use context::CodegenCx;
2121
use value::Value;
22-
use interfaces::*;
22+
use rustc_codegen_ssa::interfaces::*;
2323

24-
use rustc::hir::def_id::DefId;
25-
use rustc::ty::{self, TypeFoldable};
24+
use rustc::ty::TypeFoldable;
2625
use rustc::ty::layout::{LayoutOf, HasTyCtxt};
27-
use rustc::ty::subst::Substs;
2826

2927
/// Codegens a reference to a fn/method item, monomorphizing and
3028
/// inlining as it goes.

src/librustc_codegen_llvm/common.rs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,22 @@
1313
//! Code that is useful in various codegen modules.
1414
1515
use llvm::{self, True, False, Bool, BasicBlock, OperandBundleDef};
16-
use rustc::hir::def_id::DefId;
17-
use rustc::middle::lang_items::LangItem;
1816
use abi;
19-
use base;
2017
use consts;
2118
use type_::Type;
2219
use type_of::LayoutLlvmExt;
2320
use value::Value;
24-
use interfaces::*;
21+
use rustc_codegen_ssa::interfaces::*;
2522

26-
use rustc::ty::{Ty, TyCtxt};
2723
use rustc::ty::layout::{HasDataLayout, LayoutOf, self, TyLayout, Size};
2824
use rustc::mir::interpret::{Scalar, AllocType, Allocation};
29-
use rustc::hir;
30-
use mir::constant::const_alloc_to_llvm;
31-
use mir::place::PlaceRef;
32-
use rustc_codegen_ssa::common::TypeKind;
25+
use consts::const_alloc_to_llvm;
26+
use rustc_codegen_ssa::mir::place::PlaceRef;
3327

3428
use libc::{c_uint, c_char};
3529

3630
use syntax::symbol::LocalInternedString;
3731
use syntax::ast::Mutability;
38-
use syntax_pos::Span;
3932

4033
pub use context::CodegenCx;
4134

src/librustc_codegen_llvm/consts.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,24 @@
1111
use libc::c_uint;
1212
use llvm::{self, SetUnnamedAddr, True};
1313
use rustc::hir::def_id::DefId;
14+
use rustc::mir::interpret::{ConstValue, Allocation, read_target_uint,
15+
Pointer, ErrorHandled, GlobalId};
1416
use rustc::hir::Node;
1517
use debuginfo;
16-
use base;
1718
use monomorphize::MonoItem;
1819
use common::CodegenCx;
1920
use monomorphize::Instance;
2021
use syntax_pos::Span;
22+
use rustc_target::abi::HasDataLayout;
2123
use syntax_pos::symbol::LocalInternedString;
24+
use base;
2225
use type_::Type;
2326
use type_of::LayoutLlvmExt;
2427
use value::Value;
2528
use rustc::ty::{self, Ty};
26-
use interfaces::*;
29+
use rustc_codegen_ssa::interfaces::*;
2730

28-
use rustc::ty::layout::{Align, LayoutOf};
31+
use rustc::ty::layout::{self, Size, Align, LayoutOf};
2932

3033
use rustc::hir::{self, CodegenFnAttrs, CodegenFnAttrFlags};
3134

@@ -360,7 +363,7 @@ impl StaticMethods<'tcx> for CodegenCx<'ll, 'tcx> {
360363
unsafe {
361364
let attrs = self.tcx.codegen_fn_attrs(def_id);
362365

363-
let (v, alloc) = match ::mir::codegen_static_initializer(&self, def_id) {
366+
let (v, alloc) = match codegen_static_initializer(&self, def_id) {
364367
Ok(v) => v,
365368
// Error has already been reported
366369
Err(_) => return,

src/librustc_codegen_llvm/context.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,13 @@ use llvm_util;
1414
use rustc::dep_graph::DepGraphSafe;
1515
use rustc::hir;
1616
use debuginfo;
17-
use callee;
18-
use base;
1917
use monomorphize::Instance;
2018
use value::Value;
2119

2220
use monomorphize::partitioning::CodegenUnit;
2321
use type_::Type;
2422
use type_of::PointeeInfo;
25-
use interfaces::*;
23+
use rustc_codegen_ssa::interfaces::*;
2624
use libc::c_uint;
2725

2826
use rustc_data_structures::base_n;
@@ -34,6 +32,9 @@ use rustc::ty::layout::{LayoutError, LayoutOf, Size, TyLayout, VariantIdx};
3432
use rustc::ty::{self, Ty, TyCtxt};
3533
use rustc::util::nodemap::FxHashMap;
3634
use rustc_target::spec::{HasTargetSpec, Target};
35+
use rustc_codegen_ssa::callee::resolve_and_get_fn;
36+
use rustc_codegen_ssa::base::wants_msvc_seh;
37+
use callee::get_fn;
3738

3839
use std::ffi::CStr;
3940
use std::cell::{Cell, RefCell};
@@ -327,7 +328,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
327328
}
328329

329330
fn get_fn(&self, instance: Instance<'tcx>) -> &'ll Value {
330-
callee::get_fn(&&self,instance)
331+
get_fn(&&self,instance)
331332
}
332333

333334
fn get_param(&self, llfn: &'ll Value, index: c_uint) -> &'ll Value {
@@ -360,11 +361,11 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
360361
}
361362
let tcx = self.tcx;
362363
let llfn = match tcx.lang_items().eh_personality() {
363-
Some(def_id) if !base::wants_msvc_seh(self.sess()) => {
364-
callee::resolve_and_get_fn(self, def_id, tcx.intern_substs(&[]))
364+
Some(def_id) if !wants_msvc_seh(self.sess()) => {
365+
resolve_and_get_fn(self, def_id, tcx.intern_substs(&[]))
365366
}
366367
_ => {
367-
let name = if base::wants_msvc_seh(self.sess()) {
368+
let name = if wants_msvc_seh(self.sess()) {
368369
"__CxxFrameHandler3"
369370
} else {
370371
"rust_eh_personality"
@@ -390,7 +391,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
390391
let tcx = self.tcx;
391392
assert!(self.sess().target.target.options.custom_unwind_resume);
392393
if let Some(def_id) = tcx.lang_items().eh_unwind_resume() {
393-
let llfn = callee::resolve_and_get_fn(self, def_id, tcx.intern_substs(&[]));
394+
let llfn = resolve_and_get_fn(self, def_id, tcx.intern_substs(&[]));
394395
unwresume.set(Some(llfn));
395396
return llfn;
396397
}
@@ -446,7 +447,7 @@ impl MiscMethods<'tcx> for CodegenCx<'ll, 'tcx> {
446447
attributes::apply_target_cpu_attr(self, llfn)
447448
}
448449

449-
fn closure_env_needs_indirect_debuginfo(&self) {
450+
fn closure_env_needs_indirect_debuginfo(&self) -> bool {
450451
llvm_util::get_major_version() < 6
451452
}
452453

src/librustc_codegen_llvm/debuginfo/create_scope_map.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
use super::{FunctionDebugContext, FunctionDebugContextData};
11+
use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, FunctionDebugContextData, MirDebugScope};
1212
use super::metadata::file_metadata;
1313
use super::utils::{DIB, span_start};
1414

src/librustc_codegen_llvm/debuginfo/gdb.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use common::CodegenCx;
1616
use builder::Builder;
1717
use rustc::session::config::DebugInfo;
1818
use value::Value;
19-
use interfaces::*;
19+
use rustc_codegen_ssa::interfaces::*;
2020

2121
use syntax::attr;
2222

src/librustc_codegen_llvm/debuginfo/metadata.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,8 @@ use super::utils::{debug_context, DIB, span_start,
1717
use super::namespace::mangled_name_of_instance;
1818
use super::type_names::compute_debuginfo_type_name;
1919
use super::{CrateDebugContext};
20-
use interfaces::*;
20+
use rustc_codegen_ssa::interfaces::*;
2121
use abi;
22-
use interfaces::ConstMethods;
2322
use value::Value;
2423

2524
use llvm;

0 commit comments

Comments
 (0)