Skip to content

Commit

Permalink
Load all builtin targets at once instead of one by one
Browse files Browse the repository at this point in the history
This should give us some performance improvements as we won't need to
do the lookup for the _currently_ 287 targets we have.
  • Loading branch information
Urgau committed Feb 15, 2025
1 parent 3f33b30 commit 5ce8335
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 6 deletions.
8 changes: 2 additions & 6 deletions compiler/rustc_session/src/config/cfg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexSet};
use rustc_lint_defs::BuiltinLintDiag;
use rustc_lint_defs::builtin::EXPLICIT_BUILTIN_CFGS_IN_FLAGS;
use rustc_span::{Symbol, sym};
use rustc_target::spec::{PanicStrategy, RelocModel, SanitizerSet, TARGETS, Target, TargetTuple};
use rustc_target::spec::{PanicStrategy, RelocModel, SanitizerSet, Target};

use crate::Session;
use crate::config::{CrateType, FmtDebug};
Expand Down Expand Up @@ -426,11 +426,7 @@ impl CheckCfg {
panic!("unable to get all the check-cfg values buckets");
};

for target in TARGETS
.iter()
.map(|target| Target::expect_builtin(&TargetTuple::from_tuple(target)))
.chain(iter::once(current_target.clone()))
{
for target in Target::builtins().chain(iter::once(current_target.clone())) {
values_target_abi.insert(Symbol::intern(&target.options.abi));
values_target_arch.insert(Symbol::intern(&target.arch));
values_target_endian.insert(Symbol::intern(target.options.endian.as_str()));
Expand Down
11 changes: 11 additions & 0 deletions compiler/rustc_target/src/spec/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1662,6 +1662,12 @@ macro_rules! supported_targets {
Some(t)
}

fn load_all_builtins() -> impl Iterator<Item = Target> {
[
$( targets::$module::target(), )+
].into_iter()
}

#[cfg(test)]
mod tests {
// Cannot put this into a separate file without duplication, make an exception.
Expand Down Expand Up @@ -3360,6 +3366,11 @@ impl Target {
}
}

/// Load all built-in targets
pub fn builtins() -> impl Iterator<Item = Target> {
load_all_builtins()
}

/// Search for a JSON file specifying the given target tuple.
///
/// If none is found in `$RUST_TARGET_PATH`, look for a file called `target.json` inside the
Expand Down

0 comments on commit 5ce8335

Please sign in to comment.