add has_enzyme/needs-enzyme to the test infra

This commit is contained in:
Manuel Drehwald 2024-09-29 18:27:33 -04:00
parent 42ff2eedb0
commit bc2a913a9b
6 changed files with 19 additions and 0 deletions

View File

@ -1792,6 +1792,10 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the
cmd.arg("--host").arg(&*compiler.host.triple);
cmd.arg("--llvm-filecheck").arg(builder.llvm_filecheck(builder.config.build));
if builder.build.config.llvm_enzyme {
cmd.arg("--has-enzyme");
}
if builder.config.cmd.bless() {
cmd.arg("--bless");
}

View File

@ -139,6 +139,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
"needs-deterministic-layouts",
"needs-dlltool",
"needs-dynamic-linking",
"needs-enzyme",
"needs-force-clang-based-tests",
"needs-git-hash",
"needs-llvm-components",

View File

@ -349,6 +349,9 @@ pub struct Config {
/// whether to run `tidy` when a rustdoc test fails
pub has_tidy: bool,
/// whether to run `enzyme` autodiff tests
pub has_enzyme: bool,
/// The current Rust channel
pub channel: String,

View File

@ -218,6 +218,8 @@ pub struct TestProps {
pub filecheck_flags: Vec<String>,
/// Don't automatically insert any `--check-cfg` args
pub no_auto_check_cfg: bool,
/// Run tests which require enzyme being build
pub has_enzyme: bool,
}
mod directives {
@ -322,6 +324,7 @@ impl TestProps {
llvm_cov_flags: vec![],
filecheck_flags: vec![],
no_auto_check_cfg: false,
has_enzyme: false,
}
}

View File

@ -79,6 +79,11 @@ pub(super) fn handle_needs(
condition: cache.sanitizer_safestack,
ignore_reason: "ignored on targets without SafeStack support",
},
Need {
name: "needs-enzyme",
condition: config.has_enzyme,
ignore_reason: "ignored when LLVM Enzyme is disabled",
},
Need {
name: "needs-run-enabled",
condition: config.run_enabled(),

View File

@ -83,6 +83,7 @@ pub fn parse_config(args: Vec<String>) -> Config {
)
.optopt("", "run", "whether to execute run-* tests", "auto | always | never")
.optflag("", "ignored", "run tests marked as ignored")
.optflag("", "has-enzyme", "run tests that require enzyme")
.optflag("", "with-debug-assertions", "whether to run tests with `ignore-debug` header")
.optmulti(
"",
@ -233,6 +234,7 @@ pub fn parse_config(args: Vec<String>) -> Config {
// Avoid spawning an external command when we know tidy won't be used.
false
};
let has_enzyme = matches.opt_present("has-enzyme");
let filters = if mode == Mode::RunMake {
matches
.free
@ -331,6 +333,7 @@ pub fn parse_config(args: Vec<String>) -> Config {
.map(|s| s.parse().expect("invalid --compare-mode provided")),
rustfix_coverage: matches.opt_present("rustfix-coverage"),
has_tidy,
has_enzyme,
channel: matches.opt_str("channel").unwrap(),
git_hash: matches.opt_present("git-hash"),
edition: matches.opt_str("edition"),