diff options
| author | Deadbeef <ent3rm4n@gmail.com> | 2023-09-12 01:07:04 +0000 |
|---|---|---|
| committer | Deadbeef <ent3rm4n@gmail.com> | 2023-09-20 03:02:14 +0000 |
| commit | 7b1b17574bf1466ddd7e6657b6122244dc5a73ce (patch) | |
| tree | a413fdc5873b412afd605a0d02c41b70037437af | |
| parent | 04eec37dc2cababaecffd423e330d3c19d3c6169 (diff) | |
| download | rust-7b1b17574bf1466ddd7e6657b6122244dc5a73ce.tar.gz rust-7b1b17574bf1466ddd7e6657b6122244dc5a73ce.zip | |
fix bugs with effects fallback
| -rw-r--r-- | compiler/rustc_monomorphize/src/collector.rs | 6 | ||||
| -rw-r--r-- | compiler/rustc_passes/src/lang_items.rs | 12 |
2 files changed, 10 insertions, 8 deletions
diff --git a/compiler/rustc_monomorphize/src/collector.rs b/compiler/rustc_monomorphize/src/collector.rs index 118b3862887..67e821dcf5a 100644 --- a/compiler/rustc_monomorphize/src/collector.rs +++ b/compiler/rustc_monomorphize/src/collector.rs @@ -815,12 +815,6 @@ impl<'a, 'tcx> MirVisitor<'tcx> for MirUsedCollector<'a, 'tcx> { mir::AssertKind::BoundsCheck { .. } => LangItem::PanicBoundsCheck, _ => LangItem::Panic, }; - let def_id = tcx.require_lang_item(lang_item, Some(source)); - let instance = if has_host_effect { - Instance::new(def_id, tcx.mk_args(&[tcx.consts.true_.into()])) - } else { - Instance::mono(tcx, def_id) - }; push_mono_lang_item(self, lang_item); } mir::TerminatorKind::UnwindTerminate(reason) => { diff --git a/compiler/rustc_passes/src/lang_items.rs b/compiler/rustc_passes/src/lang_items.rs index 476394f30cc..7e837243918 100644 --- a/compiler/rustc_passes/src/lang_items.rs +++ b/compiler/rustc_passes/src/lang_items.rs @@ -20,7 +20,8 @@ use rustc_hir::lang_items::{extract, GenericRequirement}; use rustc_hir::{LangItem, LanguageItems, Target}; use rustc_middle::ty::TyCtxt; use rustc_session::cstore::ExternCrate; -use rustc_span::{symbol::kw::Empty, Span}; +use rustc_span::symbol::kw::Empty; +use rustc_span::{sym, Span}; use rustc_middle::query::Providers; @@ -157,7 +158,14 @@ impl<'tcx> LanguageItemCollector<'tcx> { self.tcx.hir().get_by_def_id(item_def_id) { let (actual_num, generics_span) = match kind.generics() { - Some(generics) => (generics.params.len(), generics.span), + Some(generics) => ( + generics + .params + .iter() + .filter(|p| !self.tcx.has_attr(p.def_id, sym::rustc_host)) + .count(), + generics.span, + ), None => (0, *item_span), }; |
