From 8b7299dd12b06b2f41707dda8562e0182c9d5672 Mon Sep 17 00:00:00 2001 From: Gary Guo Date: Tue, 31 May 2022 22:42:42 +0100 Subject: [PATCH] Remove `likely!` and `unlikely!` macro from compiler --- compiler/rustc_data_structures/src/lib.rs | 21 ------------------- .../rustc_data_structures/src/profiling.rs | 3 ++- compiler/rustc_middle/src/ty/mod.rs | 2 +- .../rustc_query_system/src/dep_graph/graph.rs | 2 +- .../rustc_query_system/src/query/plumbing.rs | 16 +++++++------- 5 files changed, 13 insertions(+), 31 deletions(-) diff --git a/compiler/rustc_data_structures/src/lib.rs b/compiler/rustc_data_structures/src/lib.rs index 0d072046d58ff..390a44d3f337d 100644 --- a/compiler/rustc_data_structures/src/lib.rs +++ b/compiler/rustc_data_structures/src/lib.rs @@ -11,7 +11,6 @@ #![feature(associated_type_bounds)] #![feature(auto_traits)] #![feature(control_flow_enum)] -#![feature(core_intrinsics)] #![feature(extend_one)] #![feature(let_else)] #![feature(hash_raw_entry)] @@ -44,26 +43,6 @@ pub fn cold_path R, R>(f: F) -> R { f() } -#[macro_export] -macro_rules! likely { - ($e:expr) => { - match $e { - #[allow(unused_unsafe)] - e => unsafe { std::intrinsics::likely(e) }, - } - }; -} - -#[macro_export] -macro_rules! unlikely { - ($e:expr) => { - match $e { - #[allow(unused_unsafe)] - e => unsafe { std::intrinsics::unlikely(e) }, - } - }; -} - pub mod base_n; pub mod binary_search_util; pub mod captures; diff --git a/compiler/rustc_data_structures/src/profiling.rs b/compiler/rustc_data_structures/src/profiling.rs index a1f42d8d3c059..88ff33b4d09a1 100644 --- a/compiler/rustc_data_structures/src/profiling.rs +++ b/compiler/rustc_data_structures/src/profiling.rs @@ -195,6 +195,7 @@ impl SelfProfilerRef { F: for<'a> FnOnce(&'a SelfProfiler) -> TimingGuard<'a>, { #[inline(never)] + #[cold] fn cold_call(profiler_ref: &SelfProfilerRef, f: F) -> TimingGuard<'_> where F: for<'a> FnOnce(&'a SelfProfiler) -> TimingGuard<'a>, @@ -203,7 +204,7 @@ impl SelfProfilerRef { f(&**profiler) } - if unlikely!(self.event_filter_mask.contains(event_filter)) { + if self.event_filter_mask.contains(event_filter) { cold_call(self, f) } else { TimingGuard::none() diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index 749feb850b098..2a116556e82c5 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -804,7 +804,7 @@ pub type PolyTraitPredicate<'tcx> = ty::Binder<'tcx, TraitPredicate<'tcx>>; impl<'tcx> TraitPredicate<'tcx> { pub fn remap_constness(&mut self, tcx: TyCtxt<'tcx>, param_env: &mut ParamEnv<'tcx>) { - if unlikely!(Some(self.trait_ref.def_id) == tcx.lang_items().drop_trait()) { + if std::intrinsics::unlikely(Some(self.trait_ref.def_id) == tcx.lang_items().drop_trait()) { // remap without changing constness of this predicate. // this is because `T: ~const Drop` has a different meaning to `T: Drop` // FIXME(fee1-dead): remove this logic after beta bump diff --git a/compiler/rustc_query_system/src/dep_graph/graph.rs b/compiler/rustc_query_system/src/dep_graph/graph.rs index 5a32d7075db06..341cf8f827bc9 100644 --- a/compiler/rustc_query_system/src/dep_graph/graph.rs +++ b/compiler/rustc_query_system/src/dep_graph/graph.rs @@ -750,7 +750,7 @@ impl DepGraph { dep_node ); - if unlikely!(!side_effects.is_empty()) { + if !side_effects.is_empty() { self.emit_side_effects(tcx, data, dep_node_index, side_effects); } diff --git a/compiler/rustc_query_system/src/query/plumbing.rs b/compiler/rustc_query_system/src/query/plumbing.rs index 3498df95196e5..3e4c7ad9f8f41 100644 --- a/compiler/rustc_query_system/src/query/plumbing.rs +++ b/compiler/rustc_query_system/src/query/plumbing.rs @@ -316,7 +316,7 @@ where OnHit: FnOnce(&C::Stored) -> R, { cache.lookup(&key, |value, index| { - if unlikely!(tcx.profiler().enabled()) { + if std::intrinsics::unlikely(tcx.profiler().enabled()) { tcx.profiler().query_cache_hit(index.into()); } tcx.dep_graph().read_index(index); @@ -354,7 +354,7 @@ where .lookup(&key, |value, index| (value.clone(), index)) .unwrap_or_else(|_| panic!("value must be in cache after waiting")); - if unlikely!(tcx.dep_context().profiler().enabled()) { + if std::intrinsics::unlikely(tcx.dep_context().profiler().enabled()) { tcx.dep_context().profiler().query_cache_hit(index.into()); } query_blocked_prof_timer.finish_with_query_invocation_id(index.into()); @@ -422,7 +422,7 @@ where let diagnostics = diagnostics.into_inner(); let side_effects = QuerySideEffects { diagnostics }; - if unlikely!(!side_effects.is_empty()) { + if std::intrinsics::unlikely(!side_effects.is_empty()) { if query.anon { tcx.store_side_effects_for_anon_node(dep_node_index, side_effects); } else { @@ -466,7 +466,9 @@ where prof_timer.finish_with_query_invocation_id(dep_node_index.into()); if let Some(result) = result { - if unlikely!(tcx.dep_context().sess().opts.debugging_opts.query_dep_graph) { + if std::intrinsics::unlikely( + tcx.dep_context().sess().opts.debugging_opts.query_dep_graph, + ) { dep_graph.mark_debug_loaded_from_disk(*dep_node) } @@ -483,8 +485,8 @@ where // currently afford to verify every hash. This subset should still // give us some coverage of potential bugs though. let try_verify = prev_fingerprint.as_value().1 % 32 == 0; - if unlikely!( - try_verify || tcx.dep_context().sess().opts.debugging_opts.incremental_verify_ich + if std::intrinsics::unlikely( + try_verify || tcx.dep_context().sess().opts.debugging_opts.incremental_verify_ich, ) { incremental_verify_ich(*tcx.dep_context(), &result, dep_node, query); } @@ -723,7 +725,7 @@ where // Ensure that only one of them runs the query. let cache = Q::query_cache(tcx); let cached = cache.lookup(&key, |_, index| { - if unlikely!(tcx.dep_context().profiler().enabled()) { + if std::intrinsics::unlikely(tcx.dep_context().profiler().enabled()) { tcx.dep_context().profiler().query_cache_hit(index.into()); } });