Add `exact-llvm-major-version` directive

This commit is contained in:
Kirill Podoprigora 2024-11-13 15:05:31 +02:00
parent 44f233f251
commit 98a71766b8
4 changed files with 24 additions and 2 deletions

View file

@ -25,6 +25,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
"dont-check-failure-status", "dont-check-failure-status",
"edition", "edition",
"error-pattern", "error-pattern",
"exact-llvm-major-version",
"exec-env", "exec-env",
"failure-status", "failure-status",
"filecheck-flags", "filecheck-flags",

View file

@ -1585,6 +1585,19 @@ fn ignore_llvm(config: &Config, line: &str) -> IgnoreDecision {
}; };
} }
} }
} else if let Some(version_string) =
config.parse_name_value_directive(line, "exact-llvm-major-version")
{
// Syntax is "only-llvm-major-version: <version>"
let version = extract_llvm_version(&version_string);
if actual_version.major > version.major || actual_version.major < version.major {
return IgnoreDecision::Ignore {
reason: format!(
"ignored when the LLVM major version is {}, but it should be {}",
actual_version.major, version.major
),
};
}
} }
} }
IgnoreDecision::Continue IgnoreDecision::Continue

View file

@ -284,6 +284,15 @@ fn llvm_version() {
let config: Config = cfg().llvm_version("10.0.0").build(); let config: Config = cfg().llvm_version("10.0.0").build();
assert!(!check_ignore(&config, "//@ min-llvm-version: 9.0")); assert!(!check_ignore(&config, "//@ min-llvm-version: 9.0"));
let config: Config = cfg().llvm_version("10.0.0").build();
assert!(check_ignore(&config, "//@ exact-llvm-major-version: 9.0"));
let config: Config = cfg().llvm_version("9.0.0").build();
assert!(check_ignore(&config, "//@ exact-llvm-major-version: 10.0"));
let config: Config = cfg().llvm_version("10.0.0").build();
assert!(!check_ignore(&config, "//@ exact-llvm-major-version: 10.0"));
} }
#[test] #[test]

View file

@ -2,8 +2,7 @@
//@ only-x86_64 //@ only-x86_64
// FIXME: Remove the `min-llvm-version`. // FIXME: Remove the `min-llvm-version`.
//@ revisions: NINETEEN TWENTY //@ revisions: NINETEEN TWENTY
//@[NINETEEN] min-llvm-version: 19 //@[NINETEEN] exact-llvm-major-version: 19
//@[NINETEEN] ignore-llvm-version: 20-99
//@[TWENTY] min-llvm-version: 20 //@[TWENTY] min-llvm-version: 20
//@ min-llvm-version: 19 //@ min-llvm-version: 19