about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2020-01-30 08:53:34 +0100
committerCamille GILLOT <gillot.camille@gmail.com>2020-02-11 23:15:27 +0100
commit513eb744c0c2ead6b10a3a3e5f0267e4136a9b4f (patch)
treece8816c509bd51b846f4e0832f47861b240dc915
parentd3b2385d40bfed00533b016e4685974b739c2da1 (diff)
Merge rustc::middle::*lang_items.
-rw-r--r--src/librustc/middle/lang_items.rs24
-rw-r--r--src/librustc/middle/mod.rs1
-rw-r--r--src/librustc/middle/weak_lang_items.rs32
-rw-r--r--src/librustc_codegen_ssa/base.rs9
-rw-r--r--src/librustc_passes/weak_lang_items.rs2
-rw-r--r--src/librustc_typeck/collect.rs4
6 files changed, 30 insertions, 42 deletions
diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs
index d9387767655..9fbb151ccdf 100644
--- a/src/librustc/middle/lang_items.rs
+++ b/src/librustc/middle/lang_items.rs
@@ -13,7 +13,9 @@ use crate::ty::{self, TyCtxt};
 
 use rustc_hir::def_id::DefId;
 use rustc_span::Span;
+use rustc_target::spec::PanicStrategy;
 
+pub use rustc_hir::weak_lang_items::link_name;
 pub use rustc_hir::{LangItem, LanguageItems};
 
 impl<'tcx> TyCtxt<'tcx> {
@@ -38,4 +40,26 @@ impl<'tcx> TyCtxt<'tcx> {
             _ => None,
         }
     }
+
+    pub fn is_weak_lang_item(&self, item_def_id: DefId) -> bool {
+        self.lang_items().is_weak_lang_item(item_def_id)
+    }
+}
+
+/// Returns `true` if the specified `lang_item` doesn't actually need to be
+/// present for this compilation.
+///
+/// Not all lang items are always required for each compilation, particularly in
+/// the case of panic=abort. In these situations some lang items are injected by
+/// crates and don't actually need to be defined in libstd.
+pub fn whitelisted(tcx: TyCtxt<'_>, lang_item: LangItem) -> bool {
+    // If we're not compiling with unwinding, we won't actually need these
+    // symbols. Other panic runtimes ensure that the relevant symbols are
+    // available to link things together, but they're never exercised.
+    if tcx.sess.panic_strategy() != PanicStrategy::Unwind {
+        return lang_item == LangItem::EhPersonalityLangItem
+            || lang_item == LangItem::EhUnwindResumeLangItem;
+    }
+
+    false
 }
diff --git a/src/librustc/middle/mod.rs b/src/librustc/middle/mod.rs
index c2959766c57..b20f2cf3a85 100644
--- a/src/librustc/middle/mod.rs
+++ b/src/librustc/middle/mod.rs
@@ -33,4 +33,3 @@ pub mod recursion_limit;
 pub mod region;
 pub mod resolve_lifetime;
 pub mod stability;
-pub mod weak_lang_items;
diff --git a/src/librustc/middle/weak_lang_items.rs b/src/librustc/middle/weak_lang_items.rs
deleted file mode 100644
index c04a6f32215..00000000000
--- a/src/librustc/middle/weak_lang_items.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-//! Validity checking for weak lang items
-
-use crate::ty::TyCtxt;
-use rustc_hir::def_id::DefId;
-use rustc_hir::{lang_items, LangItem};
-use rustc_target::spec::PanicStrategy;
-
-pub use rustc_hir::weak_lang_items::link_name;
-
-impl<'tcx> TyCtxt<'tcx> {
-    pub fn is_weak_lang_item(&self, item_def_id: DefId) -> bool {
-        self.lang_items().is_weak_lang_item(item_def_id)
-    }
-}
-
-/// Returns `true` if the specified `lang_item` doesn't actually need to be
-/// present for this compilation.
-///
-/// Not all lang items are always required for each compilation, particularly in
-/// the case of panic=abort. In these situations some lang items are injected by
-/// crates and don't actually need to be defined in libstd.
-pub fn whitelisted(tcx: TyCtxt<'_>, lang_item: LangItem) -> bool {
-    // If we're not compiling with unwinding, we won't actually need these
-    // symbols. Other panic runtimes ensure that the relevant symbols are
-    // available to link things together, but they're never exercised.
-    if tcx.sess.panic_strategy() != PanicStrategy::Unwind {
-        return lang_item == lang_items::EhPersonalityLangItem
-            || lang_item == lang_items::EhUnwindResumeLangItem;
-    }
-
-    false
-}
diff --git a/src/librustc_codegen_ssa/base.rs b/src/librustc_codegen_ssa/base.rs
index 90015091384..e9431d94863 100644
--- a/src/librustc_codegen_ssa/base.rs
+++ b/src/librustc_codegen_ssa/base.rs
@@ -28,8 +28,8 @@ use crate::{CachedModuleCodegen, CrateInfo, MemFlags, ModuleCodegen, ModuleKind}
 use rustc::middle::codegen_fn_attrs::CodegenFnAttrs;
 use rustc::middle::cstore::EncodedMetadata;
 use rustc::middle::cstore::{self, LinkagePreference};
+use rustc::middle::lang_items;
 use rustc::middle::lang_items::StartFnLangItem;
-use rustc::middle::weak_lang_items;
 use rustc::mir::mono::{CodegenUnit, CodegenUnitNameBuilder, MonoItem};
 use rustc::session::config::{self, EntryFnType, Lto};
 use rustc::session::Session;
@@ -847,11 +847,8 @@ impl CrateInfo {
 
             // No need to look for lang items that are whitelisted and don't
             // actually need to exist.
-            let missing = missing
-                .iter()
-                .cloned()
-                .filter(|&l| !weak_lang_items::whitelisted(tcx, l))
-                .collect();
+            let missing =
+                missing.iter().cloned().filter(|&l| !lang_items::whitelisted(tcx, l)).collect();
             info.missing_lang_items.insert(cnum, missing);
         }
 
diff --git a/src/librustc_passes/weak_lang_items.rs b/src/librustc_passes/weak_lang_items.rs
index 55af4373778..010712c28ba 100644
--- a/src/librustc_passes/weak_lang_items.rs
+++ b/src/librustc_passes/weak_lang_items.rs
@@ -1,7 +1,7 @@
 //! Validity checking for weak lang items
 
 use rustc::middle::lang_items;
-use rustc::middle::weak_lang_items::whitelisted;
+use rustc::middle::lang_items::whitelisted;
 use rustc::session::config;
 
 use rustc::hir::map::Map;
diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs
index b661006d1dd..ea0e4719a24 100644
--- a/src/librustc_typeck/collect.rs
+++ b/src/librustc_typeck/collect.rs
@@ -20,8 +20,8 @@ use crate::astconv::{AstConv, Bounds, SizedByDefault};
 use crate::check::intrinsic::intrinsic_operation_unsafety;
 use crate::constrained_generic_params as cgp;
 use crate::lint;
+use crate::middle::lang_items;
 use crate::middle::resolve_lifetime as rl;
-use crate::middle::weak_lang_items;
 use rustc::hir::map::blocks::FnLikeNode;
 use rustc::hir::map::Map;
 use rustc::middle::codegen_fn_attrs::{CodegenFnAttrFlags, CodegenFnAttrs};
@@ -2977,7 +2977,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, id: DefId) -> CodegenFnAttrs {
     if tcx.is_weak_lang_item(id) {
         codegen_fn_attrs.flags |= CodegenFnAttrFlags::RUSTC_STD_INTERNAL_SYMBOL;
     }
-    if let Some(name) = weak_lang_items::link_name(&attrs) {
+    if let Some(name) = lang_items::link_name(&attrs) {
         codegen_fn_attrs.export_name = Some(name);
         codegen_fn_attrs.link_name = Some(name);
     }