Skip to content

Commit

Permalink
Rollup merge of #132995 - Eclips4:issue-132348, r=jieyouxu
Browse files Browse the repository at this point in the history
compiletest: Add ``exact-llvm-major-version`` directive

Now contributors don't need to use  `min-llvm-version: X` + `ignore-llvm-version: X+1 - 99`, so they can simply use `exact-llvm-major-version: X`

To be honest, I didn't find any usages of that hack other than the one mentioned in the issue.  ( `tests/codegen/try_question_mark_nop.rs`)
Closes #132348.

rustc-dev-guide PR for `//@ exact-llvm-major-version`: rust-lang/rustc-dev-guide#2135

r? jieyouxu
  • Loading branch information
matthiaskrgr authored Nov 13, 2024
2 parents a5372ed + 81f6105 commit a1923b3
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/tools/compiletest/src/directive-list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const KNOWN_DIRECTIVE_NAMES: &[&str] = &[
"dont-check-failure-status",
"edition",
"error-pattern",
"exact-llvm-major-version",
"exec-env",
"failure-status",
"filecheck-flags",
Expand Down
13 changes: 13 additions & 0 deletions src/tools/compiletest/src/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 "exact-llvm-major-version: <version>"
let version = extract_llvm_version(&version_string);
if actual_version.major != version.major {
return IgnoreDecision::Ignore {
reason: format!(
"ignored when the actual LLVM major version is {}, but the test only targets major version {}",
actual_version.major, version.major
),
};
}
}
}
IgnoreDecision::Continue
Expand Down
15 changes: 15 additions & 0 deletions src/tools/compiletest/src/header/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,21 @@ fn llvm_version() {

let config: Config = cfg().llvm_version("10.0.0").build();
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"));

let config: Config = cfg().llvm_version("10.0.0").build();
assert!(!check_ignore(&config, "//@ exact-llvm-major-version: 10"));

let config: Config = cfg().llvm_version("10.6.2").build();
assert!(!check_ignore(&config, "//@ exact-llvm-major-version: 10"));
}

#[test]
Expand Down
3 changes: 1 addition & 2 deletions tests/codegen/try_question_mark_nop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
//@ only-x86_64
// FIXME: Remove the `min-llvm-version`.
//@ revisions: NINETEEN TWENTY
//@[NINETEEN] min-llvm-version: 19
//@[NINETEEN] ignore-llvm-version: 20-99
//@[NINETEEN] exact-llvm-major-version: 19
//@[TWENTY] min-llvm-version: 20
//@ min-llvm-version: 19

Expand Down

0 comments on commit a1923b3

Please sign in to comment.