Change:
In noticed was failing for (and other experimental llvm components) on the CI builder with (specifically ) it was already noticed that seemed to fail for . Is this expected? Or what is the expected test behavior when is ran (on the CI builder)? Or is it expected that we should skip trying to run this check for the and other experimental llvm component targets? Update: this is also true for experimental llvm components , , and , not too sure what the correct behavior is. Currently these targets are skipped by 's check.
Is there any COMPILETESTNEEDSALLLLVMCOMPONENTS set by us for this jobs?. It seems like the same issue. I will check it later.
Well, I'm not familiar with rmake. However, the right logic should be like: If is not set and do not have the , then we could skip it. is set at , and it is only used at now.
Ah thank you, that sounds about right.

Discussion:
llvm_components: Option<Vec<&'a str>>, } <del> pub fn check(path: &Path, bad: &mut bool) { crate::walk::walk(path, |path, _is_dir| filter_not_rust(path), &mut |entry, content| { </del> <ins> pub fn check(tests_path: &Path, bad: &mut bool) { crate::walk::walk(tests_path, |path, _is_dir| filter_not_rust(path), &mut |entry, content| { </ins> let file = entry.path().display(); let mut header_map = BTreeMap::new(); iter_header(content, &mut |HeaderLine { revision, directive, .. }| {

} } }); <ins> // Skip run-make tests as revisions are not supported. if entry.path().strip_prefix(tests_path).is_ok_and(|rest| rest.starts_with("run-make")) { return; } </ins> for (rev, RevisionInfo { target_arch, llvm_components }) in &header_map { let rev = rev.unwrap_or("[unspecified]"); match (target_arch, llvm_components) {

//! //! It also checks that some targets have the correct set cfgs. <ins> // ignore-tidy-linelength //@ needs-llvm-components: arm x86 // Note: without the needs-llvm-components it will fail on LLVM built without the required // components listed above. </ins> use std::collections::HashSet; use std::iter::FromIterator; use std::path::PathBuf;

<del> // Checks that all the targets returned by `rustc --print target-list` are valid // target specifications </del> <ins> // Checks that all the targets returned by `rustc --print target-list` are valid target // specifications. // ignore-tidy-linelength //@ needs-llvm-components: aarch64 arm avr bpf csky hexagon loongarch m68k mips msp430 nvptx powerpc riscv sparc systemz webassembly x86 // FIXME(jieyouxu): there has to be a better way to do this, without the needs-llvm-components it // will fail on LLVM built without all of the components listed above. </ins> use run_make_support::bare_rustc; <del> // FIXME(127877): certain experimental targets fail with creating a 'LLVM TargetMachine' // in CI, so we skip them </del> <ins> // FIXME(#127877): certain experimental targets fail with creating a 'LLVM TargetMachine' in CI, so // we skip them. </ins> const EXPERIMENTAL_TARGETS: &[&str] = &["avr", "m68k", "csky", "xtensa"]; fn main() {

<del> //! This checks the output of some `--print` options when //! output to a file (instead of stdout) </del> <ins> //! This checks the output of some `--print` options when output to a file (instead of stdout) // ignore-tidy-linelength //@ needs-llvm-components: aarch64 arm avr bpf csky hexagon loongarch m68k mips msp430 nvptx powerpc riscv sparc systemz webassembly x86 // FIXME(jieyouxu): there has to be a better way to do this, without the needs-llvm-components it // will fail on LLVM built without all of the components listed above. If adding a new target that // relies on a llvm component not listed above, it will need to be added to the required llvm // components above. </ins> use std::path::PathBuf;

<del> // ARM Cortex-M are a class of processors supported by the rust compiler. However, // they cannot support any atomic features, such as Arc. This test simply prints // the configuration details of one Cortex target, and checks that the compiler // does not falsely list atomic support. // See https://github.com/rust-lang/rust/pull/36874 </del> <ins> // ARM Cortex-M are a class of processors supported by the rust compiler. However, they cannot // support any atomic features, such as Arc. This test simply prints the configuration details of // one Cortex target, and checks that the compiler does not falsely list atomic support. // See <https://github.com/rust-lang/rust/pull/36874>. // ignore-tidy-linelength //@ needs-llvm-components: arm // Note: without the needs-llvm-components it will fail on LLVM built without all of the components // listed above. If any new targets are added, please double-check their respective llvm components // are specified above. </ins> use run_make_support::rustc;