From 352b44d1fa9ec2c969d7c8360106e6838233bcba Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Tue, 29 Mar 2016 13:50:17 +0300 Subject: [PATCH 1/3] Remove unnecessary dependencies on rustc_llvm. --- mk/crates.mk | 4 ++-- src/librustc/Cargo.toml | 1 - src/librustc/lib.rs | 5 ----- src/librustc/session/config.rs | 6 ------ src/librustc_back/Cargo.toml | 1 - src/librustc_back/lib.rs | 1 - src/librustc_driver/lib.rs | 4 ++++ src/librustc_platform_intrinsics/Cargo.toml | 1 - src/librustc_platform_intrinsics/lib.rs | 1 - src/test/run-make/execution-engine/test.rs | 2 +- 10 files changed, 7 insertions(+), 19 deletions(-) diff --git a/mk/crates.mk b/mk/crates.mk index 05018d2a94062..f5622aef55122 100644 --- a/mk/crates.mk +++ b/mk/crates.mk @@ -94,9 +94,9 @@ DEPS_syntax_ext := syntax fmt_macros DEPS_rustc_const_eval := std syntax DEPS_rustc := syntax fmt_macros flate arena serialize getopts rbml rustc_front\ - log graphviz rustc_llvm rustc_back rustc_data_structures\ + log graphviz rustc_back rustc_data_structures\ rustc_const_eval -DEPS_rustc_back := std syntax rustc_llvm rustc_front flate log libc +DEPS_rustc_back := std syntax rustc_front flate log libc DEPS_rustc_borrowck := rustc rustc_front rustc_mir log graphviz syntax DEPS_rustc_data_structures := std log serialize DEPS_rustc_driver := arena flate getopts graphviz libc rustc rustc_back rustc_borrowck \ diff --git a/src/librustc/Cargo.toml b/src/librustc/Cargo.toml index 1f000c2af68b8..d2dc5f1ed93e0 100644 --- a/src/librustc/Cargo.toml +++ b/src/librustc/Cargo.toml @@ -21,6 +21,5 @@ rustc_bitflags = { path = "../librustc_bitflags" } rustc_const_eval = { path = "../librustc_const_eval" } rustc_data_structures = { path = "../librustc_data_structures" } rustc_front = { path = "../librustc_front" } -rustc_llvm = { path = "../librustc_llvm" } serialize = { path = "../libserialize" } syntax = { path = "../libsyntax" } diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs index 4fdfe59e2b041..6b5f889fcfb85 100644 --- a/src/librustc/lib.rs +++ b/src/librustc/lib.rs @@ -50,7 +50,6 @@ extern crate getopts; extern crate graphviz; extern crate libc; extern crate rbml; -pub extern crate rustc_llvm as llvm; extern crate rustc_back; extern crate rustc_front; extern crate rustc_data_structures; @@ -140,10 +139,6 @@ pub mod util { pub mod fs; } -pub mod lib { - pub use llvm; -} - // A private module so that macro-expanded idents like // `::rustc::lint::Lint` will also work in `rustc` itself. // diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index bf532d9ccf9ed..0eef4b5221aa5 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -38,8 +38,6 @@ use std::env; use std::fmt; use std::path::PathBuf; -use llvm; - pub struct Config { pub target: Target, pub int_type: IntTy, @@ -1052,10 +1050,6 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options { let dump_dep_graph = debugging_opts.dump_dep_graph; let no_analysis = debugging_opts.no_analysis; - if debugging_opts.debug_llvm { - unsafe { llvm::LLVMSetDebug(1); } - } - let mut output_types = HashMap::new(); if !debugging_opts.parse_only && !no_trans { for list in matches.opt_strs("emit") { diff --git a/src/librustc_back/Cargo.toml b/src/librustc_back/Cargo.toml index 255ca60e2b8f4..2cf6cbc4bcfa1 100644 --- a/src/librustc_back/Cargo.toml +++ b/src/librustc_back/Cargo.toml @@ -11,7 +11,6 @@ crate-type = ["dylib"] [dependencies] syntax = { path = "../libsyntax" } serialize = { path = "../libserialize" } -rustc_llvm = { path = "../librustc_llvm" } rustc_front = { path = "../librustc_front" } log = { path = "../liblog" } diff --git a/src/librustc_back/lib.rs b/src/librustc_back/lib.rs index d854b9ed6979e..80dec2cd28153 100644 --- a/src/librustc_back/lib.rs +++ b/src/librustc_back/lib.rs @@ -45,7 +45,6 @@ extern crate syntax; extern crate libc; extern crate serialize; -extern crate rustc_llvm; extern crate rustc_front; #[macro_use] extern crate log; diff --git a/src/librustc_driver/lib.rs b/src/librustc_driver/lib.rs index d8d1cf5a026b6..057a34c27b1c7 100644 --- a/src/librustc_driver/lib.rs +++ b/src/librustc_driver/lib.rs @@ -166,6 +166,10 @@ pub fn run_compiler<'a>(args: &[String], let sopts = config::build_session_options(&matches); + if sopts.debugging_opts.debug_llvm { + unsafe { llvm::LLVMSetDebug(1); } + } + let descriptions = diagnostics_registry(); do_or_return!(callbacks.early_callback(&matches, diff --git a/src/librustc_platform_intrinsics/Cargo.toml b/src/librustc_platform_intrinsics/Cargo.toml index 97bf4f854ccb4..abdc3b3d63641 100644 --- a/src/librustc_platform_intrinsics/Cargo.toml +++ b/src/librustc_platform_intrinsics/Cargo.toml @@ -9,5 +9,4 @@ path = "lib.rs" crate-type = ["dylib"] [dependencies] -rustc_llvm = { path = "../librustc_llvm" } rustc = { path = "../librustc" } diff --git a/src/librustc_platform_intrinsics/lib.rs b/src/librustc_platform_intrinsics/lib.rs index 9736d5587693e..fdd9b7d8fd3f3 100644 --- a/src/librustc_platform_intrinsics/lib.rs +++ b/src/librustc_platform_intrinsics/lib.rs @@ -16,7 +16,6 @@ #![cfg_attr(not(stage0), deny(warnings))] #![allow(bad_style)] -extern crate rustc_llvm as llvm; extern crate rustc; use rustc::ty::TyCtxt; diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs index 7454bbfb53146..81ad276ca6874 100644 --- a/src/test/run-make/execution-engine/test.rs +++ b/src/test/run-make/execution-engine/test.rs @@ -16,6 +16,7 @@ extern crate rustc; extern crate rustc_driver; extern crate rustc_front; extern crate rustc_lint; +extern crate rustc_llvm as llvm; extern crate rustc_metadata; extern crate rustc_resolve; #[macro_use] extern crate syntax; @@ -28,7 +29,6 @@ use std::thread::Builder; use rustc::dep_graph::DepGraph; use rustc::front::map as ast_map; -use rustc::llvm; use rustc::middle::cstore::{CrateStore, LinkagePreference}; use rustc::ty; use rustc::session::config::{self, basic_options, build_configuration, Input, Options}; From 0abd3139db62172fcfa52a9da7cceff33de652ef Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Tue, 29 Mar 2016 13:50:58 +0300 Subject: [PATCH 2/3] rustc_platform_intrinsics: remove unused rustc dependency. --- mk/crates.mk | 2 +- src/etc/platform-intrinsics/generator.py | 3 +-- src/librustc_platform_intrinsics/Cargo.toml | 3 --- src/librustc_platform_intrinsics/aarch64.rs | 3 +-- src/librustc_platform_intrinsics/arm.rs | 3 +-- src/librustc_platform_intrinsics/lib.rs | 14 +++++--------- src/librustc_platform_intrinsics/x86.rs | 3 +-- src/librustc_trans/intrinsic.rs | 2 +- src/librustc_typeck/check/intrinsic.rs | 2 +- 9 files changed, 12 insertions(+), 23 deletions(-) diff --git a/mk/crates.mk b/mk/crates.mk index f5622aef55122..9b8e145f22a18 100644 --- a/mk/crates.mk +++ b/mk/crates.mk @@ -110,7 +110,7 @@ DEPS_rustc_metadata := rustc rustc_front syntax rbml rustc_const_eval DEPS_rustc_passes := syntax rustc core rustc_front DEPS_rustc_mir := rustc rustc_front syntax rustc_const_eval DEPS_rustc_resolve := arena rustc rustc_front log syntax -DEPS_rustc_platform_intrinsics := rustc rustc_llvm +DEPS_rustc_platform_intrinsics := std DEPS_rustc_plugin := rustc rustc_metadata syntax rustc_mir DEPS_rustc_privacy := rustc rustc_front log syntax DEPS_rustc_trans := arena flate getopts graphviz libc rustc rustc_back rustc_mir \ diff --git a/src/etc/platform-intrinsics/generator.py b/src/etc/platform-intrinsics/generator.py index 786cb20ed75d5..a21194962f9b0 100644 --- a/src/etc/platform-intrinsics/generator.py +++ b/src/etc/platform-intrinsics/generator.py @@ -759,12 +759,11 @@ def open(self, platform): use {{Intrinsic, Type}}; use IntrinsicDef::Named; -use rustc::middle::ty::TyCtxt; // The default inlining settings trigger a pathological behaviour in // LLVM, which causes makes compilation very slow. See #28273. #[inline(never)] -pub fn find<'tcx>(_tcx: &TyCtxt<'tcx>, name: &str) -> Option {{ +pub fn find(name: &str) -> Option {{ if !name.starts_with("{0}") {{ return None }} Some(match &name["{0}".len()..] {{'''.format(platform.intrinsic_prefix()) diff --git a/src/librustc_platform_intrinsics/Cargo.toml b/src/librustc_platform_intrinsics/Cargo.toml index abdc3b3d63641..92f37f974efdc 100644 --- a/src/librustc_platform_intrinsics/Cargo.toml +++ b/src/librustc_platform_intrinsics/Cargo.toml @@ -7,6 +7,3 @@ version = "0.0.0" name = "rustc_platform_intrinsics" path = "lib.rs" crate-type = ["dylib"] - -[dependencies] -rustc = { path = "../librustc" } diff --git a/src/librustc_platform_intrinsics/aarch64.rs b/src/librustc_platform_intrinsics/aarch64.rs index 97fe632a529f8..0fb8513e138f3 100644 --- a/src/librustc_platform_intrinsics/aarch64.rs +++ b/src/librustc_platform_intrinsics/aarch64.rs @@ -15,12 +15,11 @@ use {Intrinsic, Type}; use IntrinsicDef::Named; -use rustc::ty::TyCtxt; // The default inlining settings trigger a pathological behaviour in // LLVM, which causes makes compilation very slow. See #28273. #[inline(never)] -pub fn find<'tcx>(_tcx: &TyCtxt<'tcx>, name: &str) -> Option { +pub fn find(name: &str) -> Option { if !name.starts_with("aarch64_v") { return None } Some(match &name["aarch64_v".len()..] { "hadd_s8" => Intrinsic { diff --git a/src/librustc_platform_intrinsics/arm.rs b/src/librustc_platform_intrinsics/arm.rs index 65751d652321c..834528aaaa314 100644 --- a/src/librustc_platform_intrinsics/arm.rs +++ b/src/librustc_platform_intrinsics/arm.rs @@ -15,12 +15,11 @@ use {Intrinsic, Type}; use IntrinsicDef::Named; -use rustc::ty::TyCtxt; // The default inlining settings trigger a pathological behaviour in // LLVM, which causes makes compilation very slow. See #28273. #[inline(never)] -pub fn find<'tcx>(_tcx: &TyCtxt<'tcx>, name: &str) -> Option { +pub fn find(name: &str) -> Option { if !name.starts_with("arm_v") { return None } Some(match &name["arm_v".len()..] { "hadd_s8" => Intrinsic { diff --git a/src/librustc_platform_intrinsics/lib.rs b/src/librustc_platform_intrinsics/lib.rs index fdd9b7d8fd3f3..6fe1f0c2b9cc6 100644 --- a/src/librustc_platform_intrinsics/lib.rs +++ b/src/librustc_platform_intrinsics/lib.rs @@ -12,14 +12,10 @@ #![unstable(feature = "rustc_private", issue = "27812")] #![crate_type = "dylib"] #![crate_type = "rlib"] -#![feature(staged_api, rustc_private)] +#![feature(staged_api)] #![cfg_attr(not(stage0), deny(warnings))] #![allow(bad_style)] -extern crate rustc; - -use rustc::ty::TyCtxt; - pub struct Intrinsic { pub inputs: &'static [&'static Type], pub output: &'static Type, @@ -101,13 +97,13 @@ mod arm; mod aarch64; impl Intrinsic { - pub fn find<'tcx>(tcx: &TyCtxt<'tcx>, name: &str) -> Option { + pub fn find(name: &str) -> Option { if name.starts_with("x86_") { - x86::find(tcx, name) + x86::find(name) } else if name.starts_with("arm_") { - arm::find(tcx, name) + arm::find(name) } else if name.starts_with("aarch64_") { - aarch64::find(tcx, name) + aarch64::find(name) } else { None } diff --git a/src/librustc_platform_intrinsics/x86.rs b/src/librustc_platform_intrinsics/x86.rs index de9d3dcf3550f..54e2cb929b87a 100644 --- a/src/librustc_platform_intrinsics/x86.rs +++ b/src/librustc_platform_intrinsics/x86.rs @@ -15,12 +15,11 @@ use {Intrinsic, Type}; use IntrinsicDef::Named; -use rustc::ty::TyCtxt; // The default inlining settings trigger a pathological behaviour in // LLVM, which causes makes compilation very slow. See #28273. #[inline(never)] -pub fn find<'tcx>(_tcx: &TyCtxt<'tcx>, name: &str) -> Option { +pub fn find(name: &str) -> Option { if !name.starts_with("x86_mm") { return None } Some(match &name["x86_mm".len()..] { "_movemask_ps" => Intrinsic { diff --git a/src/librustc_trans/intrinsic.rs b/src/librustc_trans/intrinsic.rs index b7b74e44d3ed4..130a864f5e6ec 100644 --- a/src/librustc_trans/intrinsic.rs +++ b/src/librustc_trans/intrinsic.rs @@ -818,7 +818,7 @@ pub fn trans_intrinsic_call<'a, 'blk, 'tcx>(mut bcx: Block<'blk, 'tcx>, } (_, _) => { - let intr = match Intrinsic::find(tcx, &name) { + let intr = match Intrinsic::find(&name) { Some(intr) => intr, None => unreachable!("unknown intrinsic '{}'", name), }; diff --git a/src/librustc_typeck/check/intrinsic.rs b/src/librustc_typeck/check/intrinsic.rs index 8720469a72476..3c43e0d521743 100644 --- a/src/librustc_typeck/check/intrinsic.rs +++ b/src/librustc_typeck/check/intrinsic.rs @@ -360,7 +360,7 @@ pub fn check_platform_intrinsic_type(ccx: &CrateCtxt, } } _ => { - match intrinsics::Intrinsic::find(tcx, &name) { + match intrinsics::Intrinsic::find(&name) { Some(intr) => { // this function is a platform specific intrinsic if i_n_tps != 0 { From f22ec2992b698a1fe75eb49e331257c36e2ed1c2 Mon Sep 17 00:00:00 2001 From: Eduard Burtescu Date: Tue, 29 Mar 2016 13:51:46 +0300 Subject: [PATCH 3/3] mk: move rustc_const_eval to RUSTC_CRATES where it belongs. --- mk/crates.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mk/crates.mk b/mk/crates.mk index 9b8e145f22a18..ba959d2778e78 100644 --- a/mk/crates.mk +++ b/mk/crates.mk @@ -53,11 +53,12 @@ TARGET_CRATES := libc std term \ getopts collections test rand \ core alloc \ rustc_unicode rustc_bitflags \ - alloc_system alloc_jemalloc rustc_const_eval + alloc_system alloc_jemalloc RUSTC_CRATES := rustc rustc_typeck rustc_mir rustc_borrowck rustc_resolve rustc_driver \ rustc_trans rustc_back rustc_llvm rustc_privacy rustc_lint \ rustc_data_structures rustc_front rustc_platform_intrinsics \ - rustc_plugin rustc_metadata rustc_passes rustc_save_analysis + rustc_plugin rustc_metadata rustc_passes rustc_save_analysis \ + rustc_const_eval HOST_CRATES := syntax syntax_ext $(RUSTC_CRATES) rustdoc fmt_macros \ flate arena graphviz rbml log serialize TOOLS := compiletest rustdoc rustc rustbook error_index_generator