Skip to content

Commit

Permalink
Rollup merge of #129605 - jieyouxu:needs-llvm-components, r=Mark-Simu…
Browse files Browse the repository at this point in the history
…lacrum

Add missing `needs-llvm-components` directives for run-make tests that need target-specific codegen

Without suitable `needs-llvm-components` directives, some run-make tests exercising target-specific codegen can fail if the LLVM used is built without the necessary components. Currently, the list is:

```
tests\run-make\print-target-list
tests\run-make\print-to-output
tests\run-make\print-cfg
tests\run-make\target-without-atomic-cas
```

This PR also skips tidy checks for revisions and `needs-llvm-components` for run-make tests since revisions are not supported.

Fixes #129390.
Fixes #127895.

cc ``@petrochenkov`` who noticed this, thanks! Would be great if you could confirm that this fixes the test errors for you locally.
  • Loading branch information
matthiaskrgr authored Aug 31, 2024
2 parents 71240e4 + beaf9d1 commit d354d4d
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 13 deletions.
10 changes: 8 additions & 2 deletions src/tools/tidy/src/target_specific_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ struct RevisionInfo<'a> {
llvm_components: Option<Vec<&'a str>>,
}

pub fn check(path: &Path, bad: &mut bool) {
crate::walk::walk(path, |path, _is_dir| filter_not_rust(path), &mut |entry, content| {
pub fn check(tests_path: &Path, bad: &mut bool) {
crate::walk::walk(tests_path, |path, _is_dir| filter_not_rust(path), &mut |entry, content| {
let file = entry.path().display();
let mut header_map = BTreeMap::new();
iter_header(content, &mut |HeaderLine { revision, directive, .. }| {
Expand Down Expand Up @@ -65,6 +65,12 @@ pub fn check(path: &Path, bad: &mut bool) {
}
}
});

// 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;
}

for (rev, RevisionInfo { target_arch, llvm_components }) in &header_map {
let rev = rev.unwrap_or("[unspecified]");
match (target_arch, llvm_components) {
Expand Down
5 changes: 5 additions & 0 deletions tests/run-make/print-cfg/rmake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
//!
//! It also checks that some targets have the correct set cfgs.
// 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.

use std::collections::HashSet;
use std::iter::FromIterator;
use std::path::PathBuf;
Expand Down
13 changes: 9 additions & 4 deletions tests/run-make/print-target-list/rmake.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
// Checks that all the targets returned by `rustc --print target-list` are valid
// target specifications
// 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.

use run_make_support::bare_rustc;

// FIXME(127877): certain experimental targets fail with creating a 'LLVM TargetMachine'
// in CI, so we skip them
// FIXME(#127877): certain experimental targets fail with creating a 'LLVM TargetMachine' in CI, so
// we skip them.
const EXPERIMENTAL_TARGETS: &[&str] = &["avr", "m68k", "csky", "xtensa"];

fn main() {
Expand Down
10 changes: 8 additions & 2 deletions tests/run-make/print-to-output/rmake.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
//! This checks the output of some `--print` options when
//! output to a file (instead of stdout)
//! 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.

use std::path::PathBuf;

Expand Down
15 changes: 10 additions & 5 deletions tests/run-make/target-without-atomic-cas/rmake.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
// 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
// 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.

use run_make_support::rustc;

Expand Down

0 comments on commit d354d4d

Please sign in to comment.