diff --git a/mk/crates.mk b/mk/crates.mk index f5622aef551..9b8e145f22a 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 786cb20ed75..a21194962f9 100644 --- a/src/etc/platform-intrinsics/generator.py +++ b/src/etc/platform-intrinsics/generator.py @@ -759,12 +759,11 @@ class CompilerDefs(object): 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 abdc3b3d636..92f37f974ef 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 97fe632a529..0fb8513e138 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 65751d65232..834528aaaa3 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 fdd9b7d8fd3..6fe1f0c2b9c 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 de9d3dcf355..54e2cb929b8 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 b7b74e44d3e..130a864f5e6 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 8720469a724..3c43e0d5217 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 {