Change:
Tests doing codegen for specific targets need directives. These are the tests that are currently missing the directives and failing if LLVM is built without various aarch64/arm/thumb components or wasm. [ ] testsrun-makeprint-target-list [ ] testsrun-makeprint-to-output [ ] testsrun-makeprint-cfg [ ] testsrun-maketarget-without-atomic-cas Originally posted by in
E.g. for this looks a bit awkward, maybe we can dump , where is shamelessly stolen from tidy: Between this directive and , it is not exactly very clear what's happening.

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;